Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 128 additions & 0 deletions .github/workflows/site-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
name: Site Deploy

on:
push:
branches:
- main
paths:
- site/**
- .github/workflows/site-deploy.yml
workflow_dispatch:

permissions:
contents: read

concurrency:
group: site-deploy-production
cancel-in-progress: false

env:
SITE_PATH: /var/www/allofme-site
SITE_URL: https://allofmeapp.com/
SSH_PORT: 22

jobs:
deploy:
name: Deploy static site
runs-on: ubuntu-latest
timeout-minutes: 10
environment: production

steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Validate site files
run: |
set -euo pipefail

test -f site/index.html
test -f site/privacy-policy.html
test -f site/support.html
test -f site/styles.css

- name: Install rsync
run: |
set -euo pipefail

if ! command -v rsync >/dev/null 2>&1; then
sudo apt-get update
sudo apt-get install -y rsync
fi

- name: Configure SSH
env:
SSH_HOST: ${{ secrets.ALLOFME_DEPLOY_HOST }}
SSH_USER: ${{ secrets.ALLOFME_DEPLOY_USER }}
SSH_PRIVATE_KEY: ${{ secrets.ALLOFME_DEPLOY_SSH_KEY }}
run: |
set -euo pipefail

if [ -z "$SSH_HOST" ]; then
echo "ALLOFME_DEPLOY_HOST is not set." >&2
exit 1
fi

if [ -z "$SSH_USER" ]; then
echo "ALLOFME_DEPLOY_USER is not set." >&2
exit 1
fi

if [ -z "$SSH_PRIVATE_KEY" ]; then
echo "ALLOFME_DEPLOY_SSH_KEY is not set." >&2
exit 1
fi

mkdir -p ~/.ssh
chmod 700 ~/.ssh
printf '%s\n' "$SSH_PRIVATE_KEY" > ~/.ssh/allofme_deploy_key
chmod 600 ~/.ssh/allofme_deploy_key
ssh-keyscan -p "$SSH_PORT" "$SSH_HOST" >> ~/.ssh/known_hosts

- name: Check remote site directory
env:
SSH_HOST: ${{ secrets.ALLOFME_DEPLOY_HOST }}
SSH_USER: ${{ secrets.ALLOFME_DEPLOY_USER }}
run: |
set -euo pipefail

ssh -i ~/.ssh/allofme_deploy_key \
-p "$SSH_PORT" \
"$SSH_USER@$SSH_HOST" \
"SITE_PATH='$SITE_PATH' bash -s" <<'REMOTE'
set -euo pipefail

if ! command -v rsync >/dev/null 2>&1; then
echo "rsync is not installed on the server." >&2
exit 1
fi

if [ ! -d "$SITE_PATH" ]; then
echo "$SITE_PATH does not exist on the server." >&2
exit 1
fi

if [ ! -w "$SITE_PATH" ]; then
echo "$SITE_PATH is not writable by the deploy user." >&2
exit 1
fi
REMOTE

- name: Sync site files
env:
SSH_HOST: ${{ secrets.ALLOFME_DEPLOY_HOST }}
SSH_USER: ${{ secrets.ALLOFME_DEPLOY_USER }}
run: |
set -euo pipefail

rsync -az --delete --checksum --itemize-changes \
-e "ssh -i ~/.ssh/allofme_deploy_key -p $SSH_PORT" \
site/ "$SSH_USER@$SSH_HOST:$SITE_PATH/"

- name: Smoke test
run: |
set -euo pipefail

curl --fail --show-error --silent --retry 5 --retry-delay 3 "$SITE_URL" >/dev/null
curl --fail --show-error --silent --retry 5 --retry-delay 3 "${SITE_URL}privacy-policy.html" >/dev/null
curl --fail --show-error --silent --retry 5 --retry-delay 3 "${SITE_URL}support.html" >/dev/null
12 changes: 6 additions & 6 deletions docs/privacy-policy.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,9 @@ another device.

The developer may receive information only if a user intentionally sends it, for
example by contacting support, attaching screenshots, submitting TestFlight
feedback, opening a GitHub issue, or sharing a backup file. Users should avoid
sending sensitive app data in support requests unless they intentionally choose
to share it.
feedback, opening a GitHub issue, joining the community Discord, or sharing a
backup file. Users should avoid sending sensitive app data in support requests
or community spaces unless they intentionally choose to share it.

## Photos And Profile Images

Expand Down Expand Up @@ -121,9 +121,9 @@ sheet, local authentication, local file storage, and TestFlight when installed a
a beta. Those services are governed by the platform provider's terms and privacy
practices.

If a user visits the project website, GitHub repository, support page, or issue
tracker, those web services may process standard web request or account
information according to their own policies.
If a user visits the project website, GitHub repository, support page, issue
tracker, or community Discord, those web services may process standard web
request, account, or message information according to their own policies.

If a user configures a self-hosted or third-party Cloud Save server, that server
is outside the developer-operated All Of Me Cloud service.
Expand Down
10 changes: 7 additions & 3 deletions docs/support.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,16 @@ For TestFlight builds:
- Email support requests to `support@allofmeapp.com`.
- Email reproducible bugs, crashes, and broken workflows to
`bugreports@allofmeapp.com`.
- Join the community Discord for peer support, product discussion, and feedback:
<https://discord.gg/Sfqevt36pk>
- If you have access to the GitHub repository, open an issue:
<https://github.com/KopitarFan/AllOfMe/issues>

Use email for anything that should not require GitHub access. Do not include
backup files, recovery keys, member details, timeline notes, or screenshots with
sensitive information unless you intentionally choose to share them for support.
Use email for anything private or account-specific. The community Discord is not
therapy, crisis support, medical advice, or a substitute for qualified mental
health care. Do not include backup files, recovery keys, member details,
timeline notes, or screenshots with sensitive information unless you
intentionally choose to share them for support.

## Helpful Details To Include

Expand Down
Loading
Loading