Configure/deploy HTTP upload service on uploads.kosmos.chat
https://xmpp.org/extensions/xep-0363.html (Does not contain the config for ejabberd itself yet.)
This commit is contained in:
parent
21be68feb5
commit
9efb9cd78c
@ -1,23 +1,30 @@
|
||||
{
|
||||
"id": "ejabberd",
|
||||
"5apps_ldap_password": {
|
||||
"encrypted_data": "mfV9TyC4OM055JnyV73mq4qY840pH1tZC9LnIaA3A80CY2kVteC4\n",
|
||||
"iv": "gpEC3IK9BN9RkaYz\n",
|
||||
"auth_tag": "WXYWOjUCgEw5OR5VMh+Enw==\n",
|
||||
"encrypted_data": "H7WrXu2iGreO5MSoaNKAAAQOxh92rij4j4UPffs7Rjq1mtd4dMed\n",
|
||||
"iv": "uEOoET/OOSDjiELM\n",
|
||||
"auth_tag": "ehYOXsKPHNXrYNy0xJ+BSw==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"kosmos_ldap_password": {
|
||||
"encrypted_data": "Q9znUOIIXU+XsPWet4rDCjHsPPxlA3EfNTkEER/EdfoCajd1Txuh\n",
|
||||
"iv": "7SAOAwSU8rZGopB1\n",
|
||||
"auth_tag": "X8yIyw2BFbQMAVTMYLA67g==\n",
|
||||
"encrypted_data": "1u+tUrEj5JZ0F+j59f7VKztBTyn1vqT6V3H3K7uC9kHQCOUFmg3x\n",
|
||||
"iv": "NjhasM5iVF6tBzps\n",
|
||||
"auth_tag": "kSNqc3xEQavZifWcPeeFpA==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"uploads_secret": {
|
||||
"encrypted_data": "2IVxvsaGP1+D0zOT0g9+Zz4Eg42Y8FPe8GiwQDZq6I1f\n",
|
||||
"iv": "+Ujln/JDnL/afzZ3\n",
|
||||
"auth_tag": "v0QBCsEemxBaBvi6kazj+w==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
},
|
||||
"admins": {
|
||||
"encrypted_data": "xKtiBOgn4ysJt4byry31cVJUHEsatWDwHEzEve/N5NxTOh1f4QBD+Q68IYzv\nV0ulBjtW91yFcQqKNx/prAVcK3khbnsEzg8uoub9o6hSMwp16LL5x/u6T6u2\n5DwWBEy08yuaujkko57ir0Yv7mfRedT1i5SaH9pgg5VLm56G/PXrlPFfjwaU\n",
|
||||
"iv": "fpL3EA1VbXxxi+yq\n",
|
||||
"auth_tag": "iJMJAmw5gHWLFJM5kdzR9A==\n",
|
||||
"encrypted_data": "3kH8Cbc4Wy1RMd8HLa7aOCZWCZEyjmXq7JC3T0875472F708JjuOXuEqmUeG\nI82OE7lfMVrOup+hiMk9aCTQqxArayWFRZeWnMN2Ji/dbl12wJ/zKWSOPDQ2\nBHzJ/U6NoHBzmAV/PyirmD8KBNkZxCN8vhCq5azZTnmNQmu8CBxM+qUDDhd1\n",
|
||||
"iv": "dro4RKs1MDD+riaM\n",
|
||||
"auth_tag": "7yiBW9jyMzcAPWw/XR8zNQ==\n",
|
||||
"version": 3,
|
||||
"cipher": "aes-256-gcm"
|
||||
}
|
||||
|
@ -10,3 +10,12 @@ node.override["tor"]["HiddenServices"]["ejabberd"] = {
|
||||
"5269 127.0.0.1:5269"
|
||||
]
|
||||
}
|
||||
|
||||
node.default["kosmos-ejabberd"]["uploads"] = {
|
||||
"domain" => "uploads.kosmos.chat",
|
||||
"max_upload_size_mb" => "100",
|
||||
"upload.pm" => {
|
||||
"repo" => "https://gitea.kosmos.org/kosmos/ngx_http_upload.git",
|
||||
"revision" => "0.2"
|
||||
}
|
||||
}
|
||||
|
@ -19,8 +19,9 @@ chef_version '>= 12.14' if respond_to?(:chef_version)
|
||||
#
|
||||
# source_url 'https://github.com/<insert_org_here>/kosmos-ejabberd'
|
||||
|
||||
depends "kosmos-postgresql"
|
||||
depends "kosmos-base"
|
||||
depends "kosmos-postgresql"
|
||||
depends "kosmos-nginx"
|
||||
depends "backup"
|
||||
depends "firewall"
|
||||
depends "tor-full"
|
||||
|
60
site-cookbooks/kosmos-ejabberd/recipes/upload_service.rb
Normal file
60
site-cookbooks/kosmos-ejabberd/recipes/upload_service.rb
Normal file
@ -0,0 +1,60 @@
|
||||
#
|
||||
# Cookbook:: kosmos-ejabberd
|
||||
# Recipe:: upload_service
|
||||
#
|
||||
|
||||
include_recipe "kosmos-nginx::with_perl"
|
||||
|
||||
ejabberd_credentials = data_bag_item("credentials", "ejabberd")
|
||||
uploads_secret = ejabberd_credentials["uploads_secret"]
|
||||
|
||||
upload_config = node["kosmos-ejabberd"]["uploads"]
|
||||
domain = upload_config["domain"]
|
||||
|
||||
git "/opt/upload.pm" do
|
||||
repository upload_config["upload.pm"]["repo"]
|
||||
revision upload_config["upload.pm"]["revision"]
|
||||
action :sync
|
||||
end
|
||||
|
||||
directory "/var/www/upload" do
|
||||
user node["nginx"]["user"]
|
||||
group node["nginx"]["group"]
|
||||
mode "0640"
|
||||
end
|
||||
|
||||
ruby_block "configure uploads secret" do
|
||||
block do
|
||||
file = Chef::Util::FileEdit.new("/opt/upload.pm/upload.pm")
|
||||
file.search_file_replace(%r{it-is-secret}, uploads_secret)
|
||||
file.write_file
|
||||
end
|
||||
end
|
||||
|
||||
ruby_block "configure perl module in nginx" do
|
||||
block do
|
||||
file = Chef::Util::FileEdit.new("/etc/nginx/nginx.conf")
|
||||
file.insert_line_after_match(
|
||||
%r{types_hash_bucket_size},
|
||||
"\n\n perl_modules /opt/upload.pm;\n perl_require upload.pm;"
|
||||
)
|
||||
file.write_file
|
||||
end
|
||||
end
|
||||
|
||||
template "#{node["nginx"]["dir"]}/sites-available/#{domain}" do
|
||||
source "nginx_conf_upload_service.erb"
|
||||
owner node["nginx"]["user"]
|
||||
mode 0640
|
||||
variables server_name: domain,
|
||||
ssl_cert: "/etc/letsencrypt/live/#{domain}/fullchain.pem",
|
||||
ssl_key: "/etc/letsencrypt/live/#{domain}/privkey.pem",
|
||||
max_upload_size_mb: upload_config["max_upload_size_mb"]
|
||||
notifies :reload, "service[nginx]", :delayed
|
||||
end
|
||||
|
||||
nginx_site domain do
|
||||
action :enable
|
||||
end
|
||||
|
||||
nginx_certbot_site domain
|
@ -0,0 +1,19 @@
|
||||
<% if File.exist?(@ssl_cert) && File.exist?(@ssl_key) -%>
|
||||
# Generated by Chef
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name <%= @server_name %>;
|
||||
|
||||
ssl_certificate <%= @ssl_cert %>;
|
||||
ssl_certificate_key <%= @ssl_key %>;
|
||||
|
||||
root /var/www/upload;
|
||||
|
||||
client_max_body_size <%= @max_upload_size_mb %>m;
|
||||
|
||||
location / {
|
||||
perl upload::handle;
|
||||
}
|
||||
}
|
||||
<% end -%>
|
33
site-cookbooks/kosmos-nginx/recipes/with_perl.rb
Normal file
33
site-cookbooks/kosmos-nginx/recipes/with_perl.rb
Normal file
@ -0,0 +1,33 @@
|
||||
node.override['nginx']['default_site_enabled'] = false
|
||||
node.override['nginx']['server_tokens'] = 'off'
|
||||
|
||||
node.override['nginx']['package_name'] = 'nginx-core'
|
||||
include_recipe 'nginx'
|
||||
|
||||
package 'libnginx-mod-http-perl'
|
||||
|
||||
# Generate Strong Diffie-Hellman Group (increases security)
|
||||
# https://weakdh.org/sysadmin.html
|
||||
openssl_dhparam "/etc/ssl/private/dhparams.pem" do
|
||||
key_length 2048
|
||||
mode 0600
|
||||
owner 'www-data'
|
||||
end
|
||||
|
||||
cookbook_file "#{node['nginx']['dir']}/conf.d/tls_config.conf" do
|
||||
source 'nginx_tls_config.conf'
|
||||
owner 'root'
|
||||
group 'root'
|
||||
mode '0644'
|
||||
notifies :restart, 'service[nginx]'
|
||||
end
|
||||
|
||||
unless node.chef_environment == "development"
|
||||
include_recipe 'kosmos-base::firewall'
|
||||
|
||||
firewall_rule 'http/https' do
|
||||
port [80, 443]
|
||||
protocol :tcp
|
||||
command :allow
|
||||
end
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user