content/blog/2023-06-30-self-hosting-voyager.org
124 lines · 3576 bytes
Deployment Procedure for Voyager Lemmy Web Client Using Docker and Nginx
Installation Guide
Voyager is a mobile-first Lemmy web client, based on iOS design standards. It follows very closely to Apollo's design.
This post is a guide showing how I was able to build and launch my own instance of Voyager via Docker Compose.
Clone the Repository
Start by cloning the repository and entering it:
git clone https://github.com/aeharding/voyager
cd voyager
Build the Image
With this repository, you can build the image yourself without any further configuration. When complete, it'll give you the image ID for you to run.
sudo docker build .
# Successfully built 5f00723cb5be
With the image ID above, you can run the container and pass the
requested port 5314 through or use a custom port, if you wish.
You can also set the CUSTOM_LEMMY_SERVERS environment variable if you
want to add to the default suggested login servers. This must be set
with a comma separated list of suggested servers. The first instance in
the list will be the default view for logged-out users.
I will be using a docker-compose.yml file to run this container,
instead of a docker run command.
nano docker-compose.yml
version: "2"
services:
voyager:
image: 5f00723cb5be
restart: always
ports:
- "<custom_port>:5314"
environment:
- CUSTOM_LEMMY_SERVERS=lemmy.dbzer0.com,lemmy.world,lemmy.ml,beehaw.org
sudo docker-compose up -d
The web app will now be available at the following address:
<machine_ip>:<custom_port>. If you are running it on your local
device, try localhost:<custom_port>.
Reverse Proxy
If you want to visit this app via an external URL or domain name, you'll need to set up a reverse proxy. The example below uses Nginx as a reverse proxy.
Simply create the configuration file, paste the contents below, save the file, symlink the file, and restart Nginx.
sudo nano /etc/nginx/sites-available/voyager
server {
if ($host ~ ^[^.]+\.example\.com$) {
return 301 https://$host$request_uri;
}
listen [::]:80;
listen 80;
server_name voyager.example.com;
return 404;
}
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
server_name voyager.example.com;
access_log /var/log/nginx/voyager.access.log;
error_log /var/log/nginx/voyager.error.log;
location / {
proxy_http_version 1.1;
proxy_pass http://localhost:5314;
proxy_set_header Host $host;
}
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;
}
sudo ln sudo ln -s /etc/nginx/sites-available/voyager /etc/nginx/sites-enabled/voyager
sudo systemctl restart nginx.service
The site will now be available at the server_name you specified above!
You can visit my instance at voyager.cleberg.net for an example.