add 23 requested stacks from container-requests list

Tdarr, Grocy, Dashy, Traefik, Fider, Twenty CRM, Outline, Chatwoot,
ComfyUI, Picard, VoidAuth, Tinyauth, Tugtainer, Sencho, Authelia,
Mail Archiver, ITFlow, Notifuse, Maybe Finance, DumbBudget, Silverpeas,
Portus, Obsidian — all as _dev stacks following repo conventions.

Harbor and Exportify moved to 'Apps That Will Not be in the Repo'
(installer-generated compose / no published image).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
code
2026-07-16 06:24:26 +00:00
co-authored by Claude Fable 5
parent b332b8a581
commit b4375c3e09
70 changed files with 2274 additions and 56 deletions
+60
View File
@@ -0,0 +1,60 @@
# Portus
## Overview
Web UI and authorization service for on-premise Docker registries.
## Project Details
- **Project Repository:** [GitHub](https://github.com/SUSE/Portus)
- **Container Image:** [opensuse/portus](https://hub.docker.com/r/opensuse/portus/)
- **Documentation:** [port.us.org](http://port.us.org/)
- **Reverse Proxy Port:** `3000`
## Getting Started
1. Start the container: `docker compose up -d`
2. Open http://localhost:3000 in your browser
3. Follow the initial setup wizard to configure the application
## Environment Variable Notes
PORTUS_FQDN hostname Portus is reached at (must match registry config)
PORTUS_SECRET_KEY_BASE generate with `openssl rand -hex 64`
PORTUS_PASSWORD internal password Portus uses to talk to the registry
## Volume Notes
/var/lib/mysql MariaDB data
## Network Notes
Requires proxy network
## Docker Run
```bash
docker run -d \
--name portus \
-p 3000:3000 \
-e PORTUS_MACHINE_FQDN_VALUE=portus.localhost \
-e PORTUS_SECRET_KEY_BASE=changeme \
-e PORTUS_PASSWORD=changeme \
-e PORTUS_DB_HOST=dbhost \
opensuse/portus:2.5
```
## Additional Notes / Gotchas
Portus was abandoned by openSUSE/SUSE years ago — kept here for reference only. It also needs a Docker registry container configured with Portus as its token auth endpoint (not included). For a maintained registry UI consider Harbor or the built-in gitea registry.
## Dockhand Stack, Deploy from Git
Cookbooks Repository
stackname: portus_dev
Compose file path: portus_dev/compose.yaml
Additional env file (optional): portus_dev/sample.env
Then "Load" portus_dev/sample.env into the Environmental variables in dockhand
Create the Stack
+39
View File
@@ -0,0 +1,39 @@
services:
portus:
image: ${PORTUS_IMAGE:-opensuse/portus:2.5}
restart: ${PORTUS_RESTART:-unless-stopped}
environment:
- PORTUS_MACHINE_FQDN_VALUE=${PORTUS_FQDN:-portus.localhost}
- PORTUS_SECRET_KEY_BASE=${PORTUS_SECRET_KEY_BASE:-ChangeThisPassword}
- PORTUS_KEY_PATH=/certificates/portus.key
- PORTUS_PASSWORD=${PORTUS_PASSWORD:-ChangeThisPassword}
- PORTUS_DB_HOST=portus-db
- PORTUS_DB_DATABASE=portus
- PORTUS_DB_USERNAME=portus
- PORTUS_DB_PASSWORD=${PORTUS_DB_PASSWORD:-ChangeThisPassword}
- PORTUS_CHECK_SSL_USAGE_ENABLED=false
ports:
- ${PORTUS_PORT:-3000}:3000
networks:
- proxy
- internal
depends_on:
- portus-db
portus-db:
image: ${MARIADB_IMAGE:-mariadb:10.11}
restart: ${PORTUS_RESTART:-unless-stopped}
volumes:
- ${VOL_PATH:-/data}/portus/db:/var/lib/mysql
environment:
- MARIADB_DATABASE=portus
- MARIADB_USER=portus
- MARIADB_PASSWORD=${PORTUS_DB_PASSWORD:-ChangeThisPassword}
- MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD:-ChangeThisPassword}
networks:
- internal
networks:
proxy:
external: true
internal:
+11
View File
@@ -0,0 +1,11 @@
# Portus
VOL_PATH=/data
PORTUS_IMAGE=opensuse/portus:2.5
MARIADB_IMAGE=mariadb:10.11
PORTUS_RESTART=unless-stopped
PORTUS_PORT=3000
PORTUS_FQDN=portus.localhost
PORTUS_SECRET_KEY_BASE=ChangeThisPassword
PORTUS_PASSWORD=ChangeThisPassword
PORTUS_DB_PASSWORD=ChangeThisPassword
MARIADB_ROOT_PASSWORD=ChangeThisPassword