Post-Platform Digital Publishing Toolkit

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
guides:self-hosting_guide [2025/06/13 09:25] wgpguides:self-hosting_guide [2025/11/18 00:13] (current) wgp
Line 5: Line 5:
 Setting up something like a home server is a relatively straightforward process; depending on your expectations, it is possible to do it at different levels of complexity. This guide focuses on the relatively simple method (as opposed to a more comprehensive “homelab” running services like Nextcloud—explained [[guides:homeserver|in our separate guide]]), which uses a Linux computer that could be your old laptop you always keep powered on or an old desktop PC, mini-PC, a single board computer like a Raspberry Pi, or anything that can run Linux and has enough juice to run two Docker containers. [[https://www.docker.com/|Docker]] is a containerization (virtualization) system, and an alternative to Docker is [[https://podman.io/|Podman]], and both are part of the Open Container Initiative. You can use the same container images with Docker and Podman. Setting up something like a home server is a relatively straightforward process; depending on your expectations, it is possible to do it at different levels of complexity. This guide focuses on the relatively simple method (as opposed to a more comprehensive “homelab” running services like Nextcloud—explained [[guides:homeserver|in our separate guide]]), which uses a Linux computer that could be your old laptop you always keep powered on or an old desktop PC, mini-PC, a single board computer like a Raspberry Pi, or anything that can run Linux and has enough juice to run two Docker containers. [[https://www.docker.com/|Docker]] is a containerization (virtualization) system, and an alternative to Docker is [[https://podman.io/|Podman]], and both are part of the Open Container Initiative. You can use the same container images with Docker and Podman.
  
-===Before the Setup: the Intro===+==== Before the Setup ====
  
 Before getting into the setup, you first have to check your internet connection at home or where you want to set up the server for your website. Generally, to set up a self-hosting website and make your server accessible to traffic on the internet, you need to have a static IP address. This address is then used when someone wants to visit your website. Most, if not all, internet service providers, though, do not give their customers static IP addresses; the static ones are usually reserved for “enterprise,” and it is not possible to get with typical customer internet plans. But no worries, there are still some ways to overcome this issue. You can use VPS, a virtual private server that your home server connects to with its dynamic IP address, and you can direct visitor traffic to your website via this “gateway,” which is one way to solve the problem. Another solution is to use a tool that updates your DNS records every time your dynamic IP address changes. The latter is a more straightforward solution, not requiring a second external server. Before getting into the setup, you first have to check your internet connection at home or where you want to set up the server for your website. Generally, to set up a self-hosting website and make your server accessible to traffic on the internet, you need to have a static IP address. This address is then used when someone wants to visit your website. Most, if not all, internet service providers, though, do not give their customers static IP addresses; the static ones are usually reserved for “enterprise,” and it is not possible to get with typical customer internet plans. But no worries, there are still some ways to overcome this issue. You can use VPS, a virtual private server that your home server connects to with its dynamic IP address, and you can direct visitor traffic to your website via this “gateway,” which is one way to solve the problem. Another solution is to use a tool that updates your DNS records every time your dynamic IP address changes. The latter is a more straightforward solution, not requiring a second external server.
Line 25: Line 25:
 </figure> </figure>
  
-===Requirements===+====Requirements====
  
   * A PC running Linux (Debian, or Ubuntu Server)   * A PC running Linux (Debian, or Ubuntu Server)
Line 31: Line 31:
   * That's it!   * That's it!
  
-===The Steps to Follow===+====The Steps to Follow====
  
   - We start by installing Debian or Ubuntu Server on our PC. Please look for the respective distro’s instructions on how to do this. This guide is based on Debian.   - We start by installing Debian or Ubuntu Server on our PC. Please look for the respective distro’s instructions on how to do this. This guide is based on Debian.
-  - AAfter installing, use a monitor, mouse, keyboard, or [[https://opensource.com/article/20/9/ssh|SSH]] into the PC.+  - After installing, use a monitor, mouse, keyboard, or [[https://opensource.com/article/20/9/ssh|SSH]] into the PC.
   - Install Docker (or Podman). Please look up how to install Docker on your Linux distro. For Debian, you can follow these steps. Setting up Docker’s apt repository: <code>   - Install Docker (or Podman). Please look up how to install Docker on your Linux distro. For Debian, you can follow these steps. Setting up Docker’s apt repository: <code>
 # Add Docker's official GPG key: # Add Docker's official GPG key:
Line 78: Line 78:
   - All you need to know is to direct the incoming traffic via Nginx Proxy Manager to your-computer’s-local-IP-address:8080. To do that, go to Nginx Proxy Manager admin UI on your-computer’s-local-IP-address:81, go to the Proxy Hosts tab, and click on **Add Proxy Host** in the top right corner. Enter your domain name, and enter your computer’s local IP address and port 8080 beneath that. Keep the scheme http. Enable “block common exploits.” Go to the SSL tab in the same window and click “Request a new SSL certificate.” You can enable all of the options below (but beware; some options might make your website unreachable, so try disabling and enabling them). Enter your email address for Let’s Encrypt, accept the ToS, and click on save. Now, your website should be reachable on your domain! 🌐   - All you need to know is to direct the incoming traffic via Nginx Proxy Manager to your-computer’s-local-IP-address:8080. To do that, go to Nginx Proxy Manager admin UI on your-computer’s-local-IP-address:81, go to the Proxy Hosts tab, and click on **Add Proxy Host** in the top right corner. Enter your domain name, and enter your computer’s local IP address and port 8080 beneath that. Keep the scheme http. Enable “block common exploits.” Go to the SSL tab in the same window and click “Request a new SSL certificate.” You can enable all of the options below (but beware; some options might make your website unreachable, so try disabling and enabling them). Enter your email address for Let’s Encrypt, accept the ToS, and click on save. Now, your website should be reachable on your domain! 🌐
  
-===Solving the Dynamic IP Issue===+====Solving the Dynamic IP Issue====
 Here I will document my solution to dynamically update the //dynamic// IP address on the DNS records of my domain. Using something like [[https://github.com/jbbodart/gandi-livedns|this]]. Coming up soon! FIXME Here I will document my solution to dynamically update the //dynamic// IP address on the DNS records of my domain. Using something like [[https://github.com/jbbodart/gandi-livedns|this]]. Coming up soon! FIXME