Compare commits

..

9 Commits
main ... sftp

Author SHA1 Message Date
ba1c22690b switched to key-based auth for SSH, added docs 2025-01-25 18:51:02 -05:00
29c4030009 Fix owner on /content 2025-01-25 00:13:24 -05:00
8d3acfbd5d add optional feature for sftp webroot access, wip 2025-01-22 21:59:44 -05:00
fb2a287802 add nginx configuration option for single page apps 2025-01-16 19:50:54 -05:00
c788b36f13 Update .drone.yml 2025-01-08 10:09:12 -08:00
3wc
565230650d chore: publish 1.7.1+1.27.2 release 2024-10-04 13:33:30 -04:00
3wc
18c564a354 chore: publish 1.7.0+1.27.1 release 2024-10-02 13:27:33 -04:00
3wc
4653c0ea66 chore: publish 1.6.0+1.26.0 release 2024-05-11 12:18:27 -03:00
05ed929274 Update README.md
fixed syntax on cp command
2024-02-14 21:05:08 +00:00
7 changed files with 73 additions and 6 deletions

View File

@ -33,7 +33,7 @@ steps:
from_secret: drone_abra-bot_token from_secret: drone_abra-bot_token
fork: true fork: true
repositories: repositories:
- coop-cloud/auto-recipes-catalogue-json - toolshed/auto-recipes-catalogue-json
trigger: trigger:
event: tag event: tag

View File

@ -23,3 +23,10 @@ COMPOSE_FILE="compose.yml"
# temporary or permanent redirect? (uncomment one) # temporary or permanent redirect? (uncomment one)
#REDIRECT_TYPE=redirect #REDIRECT_TYPE=redirect
#REDIRECT_TYPE=permanent #REDIRECT_TYPE=permanent
# Optionally handle all URL requests using a single file (commonly index.html)
#SINGLE_PAGE_SITE_HANDLER=/index.html
# Enable an SSH server to allow SFTP uploads to the web root
#COMPOSE_FILE="$COMPOSE_FILE:compose.sftp.yml"
#PUBLIC_KEY="ssh-ed25519 AAAAC3NzaJ1lZDI1NTE5AAAAIXqf4nxUxuGmLOaxXXXXXXXXoM/GwhcrAgmtbgXToaYmCJ user@host" # Replace with a public key you generate

View File

@ -23,10 +23,25 @@ Custom HTML website, served using Nginx.
4. `abra app config YOURAPPDOMAIN` - be sure to change `$DOMAIN` to something that resolves to 4. `abra app config YOURAPPDOMAIN` - be sure to change `$DOMAIN` to something that resolves to
your Docker swarm box your Docker swarm box
5. `abra app deploy YOURAPPDOMAIN` 5. `abra app deploy YOURAPPDOMAIN`
6. Copy your files to the container using: 6. Copy your files to the container, using something like
``` ```
abra app cp YOURAPPDOMAIN index.html app:/usr/share/nginx/html abra app cp YOURAPPDOMAIN index.html app:/usr/share/nginx/html
``` ```
## 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`
1. `abra app config YOURAPPDOMAIN`
2. 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
```
3. `abra app undeploy YOURAPPDOMAIN`
3. `abra app deploy YOURAPPDOMAIN`
4. Test the SSH connection: `ssh -p 2220 sftp@YOURAPPDOMAIN`
5. You can copy local files into the server's web root with a command like: `scp -r -P 2220 * sftp@YOURAPPDOMAIN:/content`
[`abra`]: https://git.autonomic.zone/autonomic-cooperative/abra [`abra`]: https://git.autonomic.zone/autonomic-cooperative/abra
[`coop-cloud/traefik`]: https://git.autonomic.zone/coop-cloud/traefik [`coop-cloud/traefik`]: https://git.autonomic.zone/coop-cloud/traefik

View File

@ -3,7 +3,7 @@ services:
git: git:
environment: environment:
- GIT_REPO_URL - GIT_REPO_URL
image: alpine/git:v2.40.1 image: alpine/git:v2.45.2
entrypoint: /docker-entrypoint.sh entrypoint: /docker-entrypoint.sh
volumes: volumes:
- content:/git - content:/git

41
compose.sftp.yml Normal file
View File

@ -0,0 +1,41 @@
version: "3.8"
services:
ssh:
image: lscr.io/linuxserver/openssh-server:latest
networks:
- proxy
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- USER_NAME=sftp
- PUBLIC_KEY
volumes:
- content:/content:rw
ports:
- 2220:2222
deploy:
restart_policy:
condition: on-failure
# The following is an admittedly hacky way of setting the owner
# of the `content` volume to the unprivileged `sftp` user, so
# that content can be transferred through the unprivileged sshd process
# using `scp` etc.
sshstart:
image: lscr.io/linuxserver/openssh-server:latest
user: root
depends_on:
- ssh
deploy:
restart_policy:
condition: none
volumes:
- content:/content:rw
entrypoint: [ "bash", "-c", "sleep 10 && chown -R 1000:1000 /content"]
volumes:
content:
networks:
proxy:
external: true

View File

@ -3,7 +3,7 @@ version: "3.8"
services: services:
app: app:
image: nginx:1.25.3 image: nginx:1.27.2
networks: networks:
- proxy - proxy
deploy: deploy:
@ -19,7 +19,7 @@ services:
- "traefik.http.routers.${STACK_NAME}.middlewares=${STACK_NAME}-redirect" - "traefik.http.routers.${STACK_NAME}.middlewares=${STACK_NAME}-redirect"
- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLForceHost=true" - "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLForceHost=true"
- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLHost=${DOMAIN}" - "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLHost=${DOMAIN}"
- "coop-cloud.${STACK_NAME}.version=1.5.1+1.25.3" - "coop-cloud.${STACK_NAME}.version=1.7.1+1.27.2"
- "backupbot.backup=true" - "backupbot.backup=true"
- "backupbot.backup.path=/usr/share/nginx/html" - "backupbot.backup.path=/usr/share/nginx/html"
environment: environment:

View File

@ -15,7 +15,11 @@ server {
rewrite ^{{ env "REDIRECT_FROM_PATH" }}(.*)$ {{ env "REDIRECT_TO_URL" }}$1 {{ env "REDIRECT_TYPE" }}; rewrite ^{{ env "REDIRECT_FROM_PATH" }}(.*)$ {{ env "REDIRECT_TO_URL" }}$1 {{ env "REDIRECT_TYPE" }};
{{ end }} {{ end }}
try_files $uri $uri/ $uri.html =404; {{ if env "SINGLE_PAGE_SITE_HANDLER" }}
try_files $uri $uri/ {{ env "SINGLE_PAGE_SITE_HANDLER" }} =404;
{{ else }}
try_files $uri $uri/ $uri.html =404;
{{ end }}
} }
error_page 404 /404.html; error_page 404 /404.html;