Refactor tor usage, set up new tor proxy on draco
This commit is contained in:
parent
b149264919
commit
cb0fc27134
10
data_bags/credentials/tor.json
Normal file
10
data_bags/credentials/tor.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "tor",
|
||||||
|
"services": {
|
||||||
|
"encrypted_data": "GjdhL4Hgm7mrwU47e2GfotqgRSuiN+0Q19X45EWkdwbIojDfeWXwzOYFFJQK\nAWidVWKM0rdjBXkamZwbJJm8wzDi+1YFBSfE/q4NXY3Zg4JnBulMaBr4xrRn\nYbmSiRIPe0XMpwT3WbuBatZTe6EMGJJEZPgkfIcg7WjhjEnFY9xRSjrOSJGp\nBzcL1cKc+y2JyQZlpKtFK947g15EEytHWg3BdwkIvm4H+J8faM2y56lsfX8E\nG1dw9i3CKqjF2hDKe2V9yIOBji1P2Nh0Z7e3kLGhF5Nx4xfEdCHXAOQ/+vyt\nJf3pka0VQ9TsnWlkR+9CwtD9iLTnNOvO9wfHx0GuVRaR6QhMYDF2gd/9G8Zp\nQDlfJSEioETnwLwcPV7eBZ+Vso+N56J+fHHlGK3vEZSxegqNU2siLl26yZe+\nTrhKbiynLoM1290RgTNjsvMSaVLQobB5Fwpn+B01vvbIGGZ9XZWAvuCi8GmR\n",
|
||||||
|
"iv": "rj5lIBWPovDtMtnh\n",
|
||||||
|
"auth_tag": "2K55wQOY6FAWpKgskMx7xw==\n",
|
||||||
|
"version": 3,
|
||||||
|
"cipher": "aes-256-gcm"
|
||||||
|
}
|
||||||
|
}
|
@ -28,7 +28,8 @@
|
|||||||
"kvm_host",
|
"kvm_host",
|
||||||
"openresty_proxy",
|
"openresty_proxy",
|
||||||
"openresty",
|
"openresty",
|
||||||
"garage_gateway"
|
"garage_gateway",
|
||||||
|
"tor_proxy"
|
||||||
],
|
],
|
||||||
"recipes": [
|
"recipes": [
|
||||||
"kosmos-base",
|
"kosmos-base",
|
||||||
@ -58,6 +59,9 @@
|
|||||||
"kosmos-ipfs::nginx_public_gateway",
|
"kosmos-ipfs::nginx_public_gateway",
|
||||||
"kosmos-mastodon::nginx",
|
"kosmos-mastodon::nginx",
|
||||||
"remotestorage_discourse::nginx",
|
"remotestorage_discourse::nginx",
|
||||||
|
"kosmos-base::tor_services",
|
||||||
|
"tor-full",
|
||||||
|
"tor-full::default",
|
||||||
"kosmos_encfs",
|
"kosmos_encfs",
|
||||||
"kosmos_encfs::default",
|
"kosmos_encfs::default",
|
||||||
"kosmos-ejabberd::firewall",
|
"kosmos-ejabberd::firewall",
|
||||||
|
@ -20,7 +20,6 @@ development_run_list = %w(
|
|||||||
|
|
||||||
default_run_list = %w(
|
default_run_list = %w(
|
||||||
role[openresty]
|
role[openresty]
|
||||||
tor-full
|
|
||||||
kosmos-ejabberd::nginx
|
kosmos-ejabberd::nginx
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -43,6 +42,7 @@ production_run_list = %w(
|
|||||||
kosmos-ipfs::nginx_public_gateway
|
kosmos-ipfs::nginx_public_gateway
|
||||||
kosmos-mastodon::nginx
|
kosmos-mastodon::nginx
|
||||||
remotestorage_discourse::nginx
|
remotestorage_discourse::nginx
|
||||||
|
role[tor_proxy]
|
||||||
)
|
)
|
||||||
|
|
||||||
env_run_lists(
|
env_run_lists(
|
||||||
|
6
roles/tor_proxy.rb
Normal file
6
roles/tor_proxy.rb
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
name "tor_proxy"
|
||||||
|
|
||||||
|
run_list %w(
|
||||||
|
kosmos-base::tor_services
|
||||||
|
tor-full
|
||||||
|
)
|
13
site-cookbooks/kosmos-base/recipes/tor_services.rb
Normal file
13
site-cookbooks/kosmos-base/recipes/tor_services.rb
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#
|
||||||
|
# Cookbook Name:: kosmos-base
|
||||||
|
# Recipe:: tor_services
|
||||||
|
#
|
||||||
|
|
||||||
|
tor_services = data_bag_item('credentials', 'tor')['services']
|
||||||
|
|
||||||
|
tor_service "web" do
|
||||||
|
hostname tor_services['web']['hostname']
|
||||||
|
public_key tor_services['web']['public_key']
|
||||||
|
secret_key tor_services['web']['secret_key']
|
||||||
|
ports ['80 127.0.0.1:80', '443 127.0.0.1:443']
|
||||||
|
end
|
52
site-cookbooks/kosmos-base/resources/tor_service.rb
Normal file
52
site-cookbooks/kosmos-base/resources/tor_service.rb
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
require "base64"
|
||||||
|
|
||||||
|
resource_name :tor_service
|
||||||
|
provides :tor_service
|
||||||
|
|
||||||
|
property :name, [String], name_property: true
|
||||||
|
property :hostname, [String], required: true
|
||||||
|
property :public_key, [String], required: true
|
||||||
|
property :secret_key, [String], required: true
|
||||||
|
property :ports, [Array], required: true
|
||||||
|
|
||||||
|
default_action :create
|
||||||
|
|
||||||
|
action :create do
|
||||||
|
name = new_resource.name
|
||||||
|
ports = Array(new_resource.ports)
|
||||||
|
service_dir = "#{node['tor']['DataDirectory']}/#{name}"
|
||||||
|
user = "debian-tor"
|
||||||
|
group = "debian-tor"
|
||||||
|
|
||||||
|
node.normal['tor']['HiddenServices'][name]['HiddenServicePorts'] = ports
|
||||||
|
|
||||||
|
directory service_dir do
|
||||||
|
recursive true
|
||||||
|
owner user
|
||||||
|
group group
|
||||||
|
mode '4700'
|
||||||
|
end
|
||||||
|
|
||||||
|
file "#{service_dir}/hostname" do
|
||||||
|
content new_resource.hostname
|
||||||
|
owner user
|
||||||
|
group group
|
||||||
|
mode '0600'
|
||||||
|
end
|
||||||
|
|
||||||
|
file "#{service_dir}/hs_ed25519_public_key" do
|
||||||
|
content Base64.decode64(new_resource.public_key)
|
||||||
|
owner user
|
||||||
|
group group
|
||||||
|
mode '0600'
|
||||||
|
sensitive true
|
||||||
|
end
|
||||||
|
|
||||||
|
file "#{service_dir}/hs_ed25519_secret_key" do
|
||||||
|
content Base64.decode64(new_resource.secret_key)
|
||||||
|
owner user
|
||||||
|
group group
|
||||||
|
mode '0600'
|
||||||
|
sensitive true
|
||||||
|
end
|
||||||
|
end
|
@ -11,7 +11,6 @@ depends 'elasticsearch'
|
|||||||
depends 'java'
|
depends 'java'
|
||||||
depends 'firewall'
|
depends 'firewall'
|
||||||
depends 'redisio'
|
depends 'redisio'
|
||||||
depends 'tor-full'
|
|
||||||
depends 'postgresql'
|
depends 'postgresql'
|
||||||
depends 'kosmos-nodejs'
|
depends 'kosmos-nodejs'
|
||||||
depends 'kosmos_openresty'
|
depends 'kosmos_openresty'
|
||||||
|
@ -37,7 +37,8 @@ tls_cert_for server_name do
|
|||||||
action :create
|
action :create
|
||||||
end
|
end
|
||||||
|
|
||||||
onion_address = File.read("/var/lib/tor/web/hostname").strip rescue nil rescue nil
|
tor_services = data_bag_item('credentials', 'tor')['services']
|
||||||
|
onion_address = tor_services['web']['hostname']
|
||||||
|
|
||||||
openresty_site server_name do
|
openresty_site server_name do
|
||||||
template 'nginx_conf_mastodon.erb'
|
template 'nginx_conf_mastodon.erb'
|
||||||
|
@ -36,12 +36,12 @@ server {
|
|||||||
|
|
||||||
<% if @onion_address %>
|
<% if @onion_address %>
|
||||||
server {
|
server {
|
||||||
listen <%= "#{node['openresty']['listen_ip']}:" if node['openresty']['listen_ip'] %>80;
|
listen 127.0.0.1:80;
|
||||||
server_name mastodon.<%= @onion_address %>;
|
server_name mastodon.<%= @onion_address %>;
|
||||||
include <%= @shared_config_path %>;
|
include <%= @shared_config_path %>;
|
||||||
}
|
}
|
||||||
server {
|
server {
|
||||||
listen <%= "#{node['openresty']['listen_ip']}:" if node['openresty']['listen_ip'] %>443 ssl http2;
|
listen 127.0.0.1:443 ssl http2;
|
||||||
server_name mastodon.<%= @onion_address %>;
|
server_name mastodon.<%= @onion_address %>;
|
||||||
include <%= @shared_config_path %>;
|
include <%= @shared_config_path %>;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user