Mayel de Borniol 514040fceb
Some checks failed
continuous-integration/drone/pr Build is failing
remove HTML_ROOT & update readme
2025-10-18 21:32:13 +01:00
2025-01-08 10:09:12 -08:00
2025-10-18 21:32:13 +01:00
2020-10-06 20:48:21 +02:00
2025-10-18 21:32:13 +01:00
2025-10-18 21:32:13 +01:00
2025-10-18 21:32:13 +01:00

Custom HTML

Build Status

Custom HTML website, served using Nginx.

  • Category: Development
  • Status: 2, beta
  • Image: nginx, 4, upstream
  • Healthcheck: No
  • Backups: No
  • Email: N/A
  • Tests: 2
  • SSO: No

Basic usage

  1. Set up Docker Swarm and abra
  2. Deploy coop-cloud/traefik
  3. abra app new custom-html
  4. abra app config YOURAPPDOMAIN - be sure to change $DOMAIN to something that resolves to your Docker swarm box
  5. abra app deploy YOURAPPDOMAIN
  6. Copy your files to the container, using something like
abra app cp YOURAPPDOMAIN index.html app:/usr/share/nginx/html

Downloading and auto-updating from a Git repository

To automatically pull website contents from a Git repository on a schedule:

  1. abra app config YOURAPPDOMAIN
  2. Add or uncomment these lines and configure your repository and update schedule:
COMPOSE_FILE="$COMPOSE_FILE:compose.git-pull.yml"
GIT_REPO_URL="https://git.coopcloud.tech/yourorg/yourrepo"
GIT_BRANCH=main
CRON_SCHEDULE="*/10 * * * *"  # Default: every 10 minutes
  1. abra app deploy YOURAPPDOMAIN
  2. As the git-pull service has replicas: 0 in compose.git-pull.yml and doesn't run by itself. It requires either:
  • Deploying an instance of the coop-cloud/swarm-cronjob recipe on your server, OR
  • A manual cronjob on the server running: docker service scale <app_domain_tld>_git=1

Allowing upload via SSH/SFTP

To allow management of your site's files using scp, rsync or other SSH-based tools:

  1. If you don't already have one, generate an SSH keypair using ssh-keygen
  2. abra app config YOURAPPDOMAIN
  3. Uncomment these lines and add your public key:
#COMPOSE_FILE="$COMPOSE_FILE:compose.sftp.yml"
#PUBLIC_KEY="ssh-ed25519 AAAAC3NzaJ1lZDI1NTE5AAAAIXqf4nxUxuGmLOaxXXXXXXXXoM/GwhcrAgmtbgXToaYmCJ user@host" # Replace with a public key you generate
  1. abra app undeploy YOURAPPDOMAIN
  2. abra app deploy YOURAPPDOMAIN
  3. Test the SSH connection: ssh -p 2220 sftp@YOURAPPDOMAIN
  4. You can copy local files into the server's web root with a command like: scp -r -P 2220 * sftp@YOURAPPDOMAIN:/content

Redirect options

Full redirect (of all URLs under specific path)

To redirect the entire domain or a specific path to another URL:

  1. abra app config YOURAPPDOMAIN
  2. Add or uncomment these lines:
REDIRECT_FROM_PATH=/  # Path to redirect from (with trailing slash)
REDIRECT_TO_URL=https://example.com/website/  # Target URL (with trailing slash)
REDIRECT_TYPE=redirect  # Use "redirect" (for HTTP 302) or "permanent" (for 301)
  1. abra app deploy YOURAPPDOMAIN

This will redirect all requests matching REDIRECT_FROM_PATH to REDIRECT_TO_URL, carrying over the path. For example, /blog/post would redirect to https://example.com/website/blog/post.

Fallback redirect for paths not matching a file

To serve static files normally but redirect requests for all non-existent paths to a dynamic site:

  1. abra app config YOURAPPDOMAIN
  2. Add or uncomment these lines:
FALLBACK_REDIRECT_URL=https://dynamic-site.example.com
FALLBACK_REDIRECT_TYPE=302
  1. abra app deploy YOURAPPDOMAIN

This is useful for serving a static site alongside a dynamic one (that is running on a different [sub]domain) on the same domain. Existing static files are served directly, while missing URLs are redirected to the dynamic site with the full path preserved.

Single-page application (SPA) handler

Similarly, to serve all non-existent paths with a single HTML file (common for React, Vue, etc.):

  1. abra app config YOURAPPDOMAIN
  2. Add or uncomment this line:
SINGLE_PAGE_SITE_HANDLER=/index.html
  1. abra app deploy YOURAPPDOMAIN

This will serve the contents /index.html (as a rewrite rather than a redirect) for any route that doesn't match an existing file, allowing client-side routing to work properly.

Note: FALLBACK_REDIRECT_URL and SINGLE_PAGE_SITE_HANDLER are mutually exclusive options.

Description
Custom HTML website, served using Nginx
Readme 118 KiB
Languages
Shell 100%