RSSHub
RSS feed maker for thousands of sites that don't have a feed of their own, like GitHub issues, news sites, forums and shops.
Web / Tools
Website and blogging platform with a rich editor, themes, plugins, comments and pages, run from a web console. This one runs on Postgres.
It isn't in the main Portainer Templates list yet, so use this one. Portainer takes one URL at a time, so it swaps out whatever list you had before.
In Portainer, head to Settings --> App Templates, paste this in as the URL and save.
https://raw.githubusercontent.com/NotAFlightRisk/portainer-templates-extras/main/templates.json http://<your-server>:8091 in a browser.The same file Portainer deploys. It reads its settings from a .env next to it.
services:
halo:
image: halohub/halo:2
restart: unless-stopped
ports:
- "${HALO_PORT:-8091}:8090"
environment:
TZ: ${HALO_TZ:-UTC}
SPRING_R2DBC_URL: r2dbc:pool:postgresql://postgres/halo
SPRING_R2DBC_USERNAME: halo
SPRING_R2DBC_PASSWORD: ${HALO_DB_PASSWORD:?Set a database password}
SPRING_SQL_INIT_PLATFORM: postgresql
volumes:
- halo-data:/root/.halo2
depends_on:
postgres:
condition: service_healthy
postgres:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_DB: halo
POSTGRES_USER: halo
POSTGRES_PASSWORD: ${HALO_DB_PASSWORD:?Set a database password}
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U halo -d halo"]
interval: 10s
timeout: 5s
retries: 5
volumes:
halo-data:
postgres-data:
Fill in the blanks, as Halo won't start without them.
# Database password (required) - Generate one with: openssl rand -hex 32. Keep it the same when you redeploy, or Halo can't reach its database.
HALO_DB_PASSWORD=
# Host port for the web UI
HALO_PORT=8091
# Timezone - Like Europe/London. Post dates on the site use it.
HALO_TZ=UTC Grab the file and start it.
mkdir halo && cd halo
curl -fsSL -o compose.yml https://raw.githubusercontent.com/NotAFlightRisk/portainer-templates-extras/main/apps/halo/compose.yml
# save the .env tab here as .env first
docker compose up -d Set the database password before you deploy (openssl rand -hex 32 makes a good one), since the stack won't start without it. Then open http://<your-host>:8091 (or whichever port you picked) from the address you'll actually use, since the setup page saves it as the site's External URL. That page also creates the admin, and whoever reaches it first gets to, so do it straight away. The console is at /console. The sample post, About page, menu and category it starts with are in Chinese whatever language you pick, so rename or delete them there. Posts and settings live in Postgres, in the postgres-data volume, and uploads, themes and plugins in halo-data. Docs (in Chinese): docs.halo.run
What the Portainer form asks for. With compose they go in the .env file instead.
| Variable | What it's for | Default |
|---|---|---|
HALO_DB_PASSWORD | Database password (required) Generate one with: openssl rand -hex 32. Keep it the same when you redeploy, or Halo can't reach its database. | Needs filling in |
HALO_PORT | Host port for the web UI | 8091 |
HALO_TZ | Timezone Like Europe/London. Post dates on the site use it. | UTC |
The containers this stack runs, with ports as they come out of the box.
| Service | Image | Ports |
|---|---|---|
halo | halohub/halo:2 | 8091:8090 |
postgres | postgres:17-alpine | Internal only |