From df7b58d51987ed2dd2a224a598031218b793fd28 Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 4 May 2019 19:00:07 +0200 Subject: [PATCH] Created Apache proxy setup (markdown) --- Apache-proxy-setup.md | 71 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 Apache-proxy-setup.md diff --git a/Apache-proxy-setup.md b/Apache-proxy-setup.md new file mode 100644 index 0000000..93b7455 --- /dev/null +++ b/Apache-proxy-setup.md @@ -0,0 +1,71 @@ +I've assumed you have created a DNS A record for `trilium.yourdomain.com` that you want to use for your trilium server. + +1. Download docker image and create container + + docker pull zadam/trilium:[VERSION] + + docker create --name trilium -t -p 8080:8080 -v ~/trilium-data:/root/trilium-data zadam/trilium:[VERSION] + +1. Configure Apache proxy and websocket proxy + 1. Enable apache proxy modules + + a2enmod ssl + a2enmod proxy + a2enmod proxy_http + a2enmod proxy_wstunnel + + 2. Create a new let's encrypt certificate + + sudo certbot certonly -d trilium.mydomain.com + + Choose standalone (2) and note the location of the created certificates (typically /etc/letsencrypt/live/...) + + 3. Create a new virtual host file for apache (you may want to use `apachectl -S` to determine the server root location, mine is /etc/apahce2) + + sudo nano /etc/apache2/sites-available/trilium.yourdomain.com.conf + + Paste (and customize) the following text into the configuration file + + + ServerName http://trilium.yourdomain.com + RewriteEngine on + RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent] + + + ServerName https://trilium.yourdomain.com + RewriteEngine On + RewriteCond %{HTTP:Connection} Upgrade [NC] + RewriteCond %{HTTP:Upgrade} websocket [NC] + RewriteRule /(.*) ws://localhost:8080/$1 [P,L] + ProxyPass / http://localhost:8080/ + ProxyPassReverse / http://localhost:8080/ + SSLCertificateFile /etc/letsencrypt/live/trilium.yourdomain.com/fullchain.pem + SSLCertificateKeyFile /etc/letsencrypt/live/trilium.yourdomain.com/privkey.pem + Include /etc/letsencrypt/options-ssl-apache.conf + + + + 4. Enable the virtual host with `sudo a2ensite trilium.yourdomain.com.conf` + 5. Reload apache2 with `sudo systemctl reload apache2` + +1. Create and enable a systemd service to start the docker container on boot + 1. Create a new empty file called `/lib/systemd/system/trilium.service` with the contents + + [Unit] + Description=Trilium Server + Requires=docker.service + After=docker.service + + [Service] + Restart=always + ExecStart=/usr/bin/docker start -a trilium + ExecStop=/usr/bin/docker stop -t 2 trilium + + [Install] + WantedBy=local.target + + 2. Install, enable and start service + + sudo systemctl daemon-reload + sudo systemctl enable trilium.service + sudo systemctl start trilium.service \ No newline at end of file