diff options
Diffstat (limited to 'blog/self-hosting-otter-wiki')
-rw-r--r-- | blog/self-hosting-otter-wiki/index.org | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/blog/self-hosting-otter-wiki/index.org b/blog/self-hosting-otter-wiki/index.org new file mode 100644 index 0000000..c308f12 --- /dev/null +++ b/blog/self-hosting-otter-wiki/index.org @@ -0,0 +1,135 @@ +#+title: Self-Hosting An Otter Wiki +#+date: <2024-02-21> +#+description: Learn how to easily self-host An Otter Wiki. +#+filetags: :selfhosting: + +* An Otter Wiki +[[https://otterwiki.com/][An Otter Wiki]] is an easy to use wiki +software that takes almost no effort to set up and maintain. + +* Installation +To install An Otter Wiki, I'm going to use Docker Compose to create the +container and then use Nginx as a reverse proxy to allow external access +via a subdomain I own. + +** Docker Compose +Start by creating a directory for the container's files. + +#+begin_src sh +mkdir ~/otterwiki +#+end_src + +Next, create the =docker-compose.yml= file to define the container's +parameters. + +#+begin_src sh +nano ~/otterwiki/docker-compose.yml +#+end_src + +Within the file, paste the following content. You can read the project's +documentation if you want to further override or customize the +container. + +#+begin_src conf +version: '3' +services: + otterwiki: + image: redimp/otterwiki:2 + restart: unless-stopped + # Internal port must be assigned to port 80 + # External port can be customized + ports: + - 8337:80 + volumes: + - ./app-data:/app-data +#+end_src + +Once the file is saved and closed, you can launch the container. + +#+begin_src sh +cd ~/otterwiki +sudo docker-compose up -d +#+end_src + +The container is now available at =localhost:8337=. Next, we will use +Nginx to serve this app externally. + +** Nginx +To access the app externally, let's set up a reverse proxy. I'll start +by creating the Nginx configuration file for my wiki. + +#+begin_src sh +sudo nano /etc/nginx/sites-available/wiki +#+end_src + +Within the file, I have saved the following content. This assumes you +already have a TLS/SSL cert to use with this subdomain. If not, simply +remove the =ssl_*= variables, remove the =80= server block, and change +the =443= server block to =80= to serve the app without SSL. + +#+begin_src conf +server { + if ($host ~ ^[^.]+\.example\.com$) { + return 301 https://$host$request_uri; + } + + listen [::]:80; + listen 80; + server_name wiki.example.com; + return 404; +} + +server { + listen [::]:443 ssl http2; + listen 443 ssl http2; + server_name wiki.example.com; + access_log /var/log/nginx/wiki.access.log; + error_log /var/log/nginx/wiki.error.log; + + ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; + include /etc/letsencrypt/options-ssl-nginx.conf; + ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; + + location / { + set $upstream_wiki http://127.0.0.1:8337; + proxy_pass $upstream_wiki; + + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Host $http_host; + } +} +#+end_src + +Save and close the configuration file. On Nginx, we need to symlink the +file to enable it. + +#+begin_src sh +sudo ln -s /etc/nginx/sites-available/wiki /etc/nginx/sites-enabled/wiki +#+end_src + +Once enabled, restart the Nginx server to start serving the app +externally. + +#+begin_src sh +sudo systemctl restart nginx.service +#+end_src + +* Screenshots +In the screenshot below, you can see the initial launch screen for An +Otter Wiki. Start by creating your admin account and configure the app +as necessary. + +#+caption: An Otter Wiki - Initial Screen +[[https://img.cleberg.net/blog/20240221-otterwiki/otterwiki.png]] + +You can also see the default editing screen for creating and editing +pages. It's as easy as typing Markdown and hitting the save button. + +#+caption: An Otter Wiki - Editing Screen +[[https://img.cleberg.net/blog/20240221-otterwiki/otterwiki-edit.png]] + +Overall, I like An Otter Wiki and will be looking forward to seeing how +much use I get out of it going forward. |