---
title: Static pages
license: 'CC-BY-SA-4.0'
---

LXC container dedicated to hosting static HTML pages.

# LXC container

See the [static-pages section in the infrastructure documentation](../infrastructure/).

# SSL on the LXC host

Each domain has a `/etc/nginx/sites-available/f3.forgefriends.forgejo.org` file similar to the following
on the host where the LXC container resides.

```nginx
server {
    listen 80;
    listen [::]:80;

    server_name f3.forgefriends.forgejo.org;

    location / {
        proxy_pass http://10.6.83.106:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
```

Obtain the certificate:

```sh
ln -sf /etc/nginx/sites-available/f3.forgefriends.forgejo.org /etc/nginx/sites-enabled/f3.forgefriends.forgejo.org
sudo certbot -n --agree-tos --email contact@forgejo.org -d f3.forgefriends.forgejo.org --nginx
```

# Creation in the LXC container

With the example of `f3.forgefriends.forgejo.org` and
`f3.forgefriends.org` serving the same content.

## login

From the LXC host:

```sh
lxc-helpers.sh lxc_container_run static-pages -- sudo --user $USER bash
```

## nginx

```
$ cat /etc/nginx/sites-enabled/f3.forgefriends.org
server {
        listen 80;
        listen [::]:80;

        server_name f3.forgefriends.org f3.forgefriends.forgejo.org;

        root /var/www/f3.forgefriends.org;

        location / {
                try_files $uri $uri/ =404;
        }
}
```

## clone

```sh
git clone https://code.forgejo.org/f3/html-documentation /var/www/f3.forgefriends.org
```

# Update in the LXC container

## Webhook

Create a `POST` webhook with the URL `https://f3.forgefriends.forgejo.org/.well-known/forgejo/f3.forgefriends.org` on https://code.forgejo.org/f3/html-documentation. It is expected to fail with 404, the information will be extracted from the web server logs.

To verify that it works:

- `journalctl -f --unit static-pages`
- `Test delivery` at https://code.forgejo.org/f3/html-documentation/settings/hooks/4

## Service

### git pull on change

```sh
$ cat /usr/local/bin/static-pages.sh
#!/bin/bash

sudo tail -f /var/log/nginx/access.log | sed --silent --regexp-extended --unbuffered --expression 's|.*.well-known/forgejo/([^ /]+) .*|\1|p' | while read server ; do
    d="/var/www/$server"
    if test -d "$d" ; then
        echo "update $server"
        cd "$d"
        git pull
    else
        echo "unknown server $server"
    fi
done
```

### service

```sh
$ cat /etc/systemd/system/static-pages.service
[Unit]
Description=Static pages

[Service]
User=debian
ExecStart=/usr/local/bin/static-pages.sh

[Install]
WantedBy=multi-user.target
$ sudo systemctl enable static-pages
```
