aboutsummaryrefslogtreecommitdiff
path: root/content/blog/2024-02-21-self-hosting-otter-wiki.org
diff options
context:
space:
mode:
authorChristian Cleberg <hello@cleberg.net>2024-03-29 01:30:23 -0500
committerChristian Cleberg <hello@cleberg.net>2024-03-29 01:30:23 -0500
commit41bd0ad58e44244fe67cb36e066d4bb68738516f (patch)
tree205e844650144648e58700df2b632c89298904d4 /content/blog/2024-02-21-self-hosting-otter-wiki.org
parent797a1404213173791a5f4126a77ad383ceb00064 (diff)
downloadcleberg.net-41bd0ad58e44244fe67cb36e066d4bb68738516f.tar.gz
cleberg.net-41bd0ad58e44244fe67cb36e066d4bb68738516f.tar.bz2
cleberg.net-41bd0ad58e44244fe67cb36e066d4bb68738516f.zip
massive re-write from org-publish to weblorg
Diffstat (limited to 'content/blog/2024-02-21-self-hosting-otter-wiki.org')
-rw-r--r--content/blog/2024-02-21-self-hosting-otter-wiki.org135
1 files changed, 135 insertions, 0 deletions
diff --git a/content/blog/2024-02-21-self-hosting-otter-wiki.org b/content/blog/2024-02-21-self-hosting-otter-wiki.org
new file mode 100644
index 0000000..c308f12
--- /dev/null
+++ b/content/blog/2024-02-21-self-hosting-otter-wiki.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.