Files
thepraandClaude Opus 5.5 7589121846
Build / Desktop, server and tools (push) Successful in 1m7s
me-web? skeleton: Avalonia 12 app, server, packaging and CI
The first screen (online or not, a Check button, every language with a
draft notice), the desktop and Android heads, the server's /api/info and
/api/ip, a release tool that builds deb, rpm, a Windows exe, macOS zips,
a signed APK and the server, and the Gitea workflows that run it. Rules
adapted from passolo; AGPL-3.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012CzABvBkbcFqoHdmi8b9WB
2026-10-15 01:14:44 +02:00

66 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
here="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
site=meweb.arasaka.software
names=(meweb.arasaka.software v4.meweb.arasaka.software v6.meweb.arasaka.software)
app=/var/www/$site
backups=/var/backups/$site
etc=/etc/meweb
env=$etc/meweb.env
unit=/etc/systemd/system/meweb.service
sudoers=/etc/sudoers.d/gitea-runner
acme=/root/.acme.sh/acme.sh
cert=/root/.acme.sh/${site}_ecc/fullchain.cer
[ "$(id -u)" = 0 ] || { echo "run as root"; exit 1; }
id meweb >/dev/null 2>&1 || useradd --system --no-create-home --shell /usr/sbin/nologin meweb
install -d -o gitea-runner -g gitea-runner -m 755 "$app" "$backups"
install -d -o root -g meweb -m 750 "$etc"
if [ ! -f "$env" ]; then
printf '%s\n' \
'ASPNETCORE_ENVIRONMENT=Production' \
'ASPNETCORE_URLS=http://127.0.0.1:5480' \
'DOTNET_PRINT_TELEMETRY_MESSAGE=false' \
'DOTNET_CLI_TELEMETRY_OPTOUT=1' > "$env"
chown root:meweb "$env"
chmod 640 "$env"
echo "wrote $env"
fi
install -m 644 "$here/meweb.service" "$unit"
systemctl daemon-reload
systemctl enable meweb.service >/dev/null 2>&1
line="gitea-runner ALL=(root) NOPASSWD: /usr/bin/systemctl start meweb, /usr/bin/systemctl stop meweb, /usr/bin/systemctl restart meweb, /usr/bin/systemctl is-active meweb, /usr/bin/systemctl show meweb*, /usr/bin/systemctl status meweb*"
if ! grep -qF "$line" "$sudoers"; then
cp "$sudoers" "$sudoers.new"
echo "$line" >> "$sudoers.new"
visudo -cf "$sudoers.new" >/dev/null
install -m 440 "$sudoers.new" "$sudoers"
rm -f "$sudoers.new"
echo "sudoers: meweb added for gitea-runner"
fi
if [ ! -f "$cert" ]; then
install -m 644 "$here/nginx/$site.http.conf" "/etc/nginx/sites-enabled/$site.conf"
nginx -t
systemctl reload nginx
args=()
for name in "${names[@]}"; do args+=(-d "$name"); done
"$acme" --issue --webroot /var/www/acme "${args[@]}" --keylength ec-256 --reloadcmd "systemctl reload nginx"
fi
install -m 644 "$here/nginx/$site.conf" "/etc/nginx/sites-enabled/$site.conf"
nginx -t
systemctl reload nginx
if [ -x "$app/MeWeb.Server" ]; then
systemctl restart meweb
systemctl is-active meweb
else
echo "no build in $app yet: the release workflow deploys it"
fi
echo "setup done"