Compare commits

...
18 Commits
Author SHA1 Message Date
futile 5ee5a2cfb0 oops dont default to that 2026-07-25 21:36:41 +01:00
futile f6cfb706da sometimes do hot backups 2026-07-25 21:31:15 +01:00
futile 7d4f8ca9c5 home: update back urls 2026-07-24 16:43:49 +01:00
futile 3b661a698e update caddyfile 2026-07-24 16:41:00 +01:00
futile 132cc91d06 update caddyfile 2026-07-24 16:31:15 +01:00
futile 0fbe068197 update readme 2026-07-24 13:24:33 +01:00
futile 2ebf7ca958 scripts: update ssh port 2026-07-24 13:23:49 +01:00
futile 08c4c78c8e scripts: add gdu to packages 2026-07-24 11:12:48 +01:00
futile 9ce6a93b99 home: update setup 2026-07-24 11:11:55 +01:00
futile a20dc43559 home: amend terms 2026-07-24 11:11:37 +01:00
futile d56192ce0d home: update style 2026-07-24 11:11:15 +01:00
futile 28ff6a9fdc docs: correctly name cloned dir in setup 2026-07-24 10:33:20 +01:00
futile 2ea01a8824 home: link to privacy/terms history 2026-07-24 10:33:07 +01:00
futile fe775a5a7e home: amend terms 2026-07-24 10:30:23 +01:00
futile 33eb9d7748 home: add a last updated timestamp to terms & privacy 2026-07-24 10:10:59 +01:00
futile 81486654de home: update setup 2026-07-23 21:57:53 +01:00
futile 7228c8c131 home: amend terms 2026-07-23 21:54:55 +01:00
futile 977cfb2197 home: improve setup page 2026-07-23 19:10:19 +01:00
10 changed files with 76 additions and 24 deletions
+13 -1
View File
@@ -5,9 +5,21 @@
atom.town { atom.town {
root * /srv/home root * /srv/home
file_server
encode zstd encode zstd
# /index.html -> /
@indexhtml path_regexp idx ^(.*/)index\.html$
redir @indexhtml {re.idx.1} permanent
# /something.html -> /something
@html path_regexp strip ^(.+)\.html$
redir @html {re.strip.1} permanent
# something -> something.html
try_files {path} {path}.html {path}/index.html
file_server
@assets path /assets/* @assets path /assets/*
header @assets Cache-Control "public, max-age=604800, immutable" header @assets Cache-Control "public, max-age=604800, immutable"
} }
+1
View File
@@ -11,3 +11,4 @@ here, you will be at home.
- [gitea](docs/services/gitea.md) - [gitea](docs/services/gitea.md)
- [backups](docs/backups.md) - [backups](docs/backups.md)
- [misc](docs/misc.md) - [misc](docs/misc.md)
- [todo](docs/todo.md)
+2 -1
View File
@@ -11,7 +11,8 @@ always remember to `docker compose stop` before doing any of this!
- to back up automatically, run `sudo EDITOR=micro crontab -e` and add the following: - to back up automatically, run `sudo EDITOR=micro crontab -e` and add the following:
``` ```
TZ=UTC TZ=UTC
0 6 * * * /home/admin/atom.town/scripts/volume-backup.sh 0 6 * * * /home/admin/atom.town/scripts/volume-backup.sh cold
0 0,12,18 * * * /home/admin/atom.town/scripts/volume-backup.sh hot
``` ```
**restoring** **restoring**
+1 -1
View File
@@ -7,7 +7,7 @@
- `sudo su - admin` - `sudo su - admin`
3. use the system setup script, and log out 3. use the system setup script, and log out
- `sudo dnf install git -y` - `sudo dnf install git -y`
- `git clone https://git.atom.town/atom/town` - `git clone https://git.atom.town/atom/town && mv town atom.town`
- `./atom.town/scripts/system-setup.sh` - `./atom.town/scripts/system-setup.sh`
- `exit` - `exit`
4. log in again, populate the `.env` and start everything up 4. log in again, populate the `.env` and start everything up
+2 -2
View File
@@ -14,11 +14,11 @@
<img src="assets/logo.avif" class="logo" /> <img src="assets/logo.avif" class="logo" />
<div class="flex flex-col gap-8 mt-4"> <div class="flex flex-col gap-8 mt-4">
<p class="font-light">hello, and welcome to atom.town. here, you will be at home.</p> <p class="font-light">hello, and welcome to atom.town. here, you will be at home.</p>
<div class="flex flex-col"> <div class="flex flex-col w-fit">
<a href="https://mail.atom.town" target="_blank" class="font-normal pop big">webmail</a> <a href="https://mail.atom.town" target="_blank" class="font-normal pop big">webmail</a>
<a href="https://git.atom.town" target="_blank" class="font-normal pop big">git</a> <a href="https://git.atom.town" target="_blank" class="font-normal pop big">git</a>
</div> </div>
<div class="flex flex-col"> <div class="flex flex-col w-fit">
<a href="terms-privacy.html" class="font-normal pop big">terms & privacy</a> <a href="terms-privacy.html" class="font-normal pop big">terms & privacy</a>
<a href="setup.html" class="font-normal pop big">setup</a> <a href="setup.html" class="font-normal pop big">setup</a>
</div> </div>
+6 -3
View File
@@ -12,8 +12,8 @@
</head> </head>
<body> <body>
<img src="assets/logo.avif" class="logo" /> <img src="assets/logo.avif" class="logo" />
<div class="flex flex-col gap-8 mt-4"> <div class="flex flex-col gap-8 mt-4 max-w-md">
<p class="font-light">some notes for stuff you might need to know</p> <p class="font-light">things that are useful to know</p>
<div class="flex flex-col gap-2"> <div class="flex flex-col gap-2">
<h2 class="font-heavy big">email</h2> <h2 class="font-heavy big">email</h2>
<ul class="font-light"> <ul class="font-light">
@@ -21,8 +21,11 @@
<li>incoming mail uses <b>imap</b> with <b>ssl/tls</b> on port <b>993</b></li> <li>incoming mail uses <b>imap</b> with <b>ssl/tls</b> on port <b>993</b></li>
<li>outgoing mail uses <b>smtp</b> with <b>ssl/tls</b> on port <b>465</b></li> <li>outgoing mail uses <b>smtp</b> with <b>ssl/tls</b> on port <b>465</b></li>
</ul> </ul>
<ul class="font-light">
<li>the mailserver also has a few other functions. it is an admin dashboard, which anyone can use to configure their own email account, and also the oidc (auth) provider.</li>
</ul>
</div> </div>
<a href="/" class="self-start font-normal pop">← back</a> <a href="/index.html" class="self-start font-normal pop">← back</a>
</div> </div>
</body> </body>
</html> </html>
+24 -4
View File
@@ -7,10 +7,11 @@ html {
background: url("../assets/clouds.avif"), linear-gradient(180deg, hwb(230 20% 0%) 0%, hwb(230 90% 0%) 110%); background: url("../assets/clouds.avif"), linear-gradient(180deg, hwb(230 20% 0%) 0%, hwb(230 90% 0%) 110%);
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: cover, cover; background-size: cover, cover;
background-attachment: fixed;
} }
body { body {
height: 100dvh; min-height: 100dvh;
padding: 20px; padding: 20px;
} }
@@ -31,7 +32,7 @@ ul {
/* tailwind lite */ /* tailwind lite */
:root { --space: 4px; } :root { --space: 4px; }
.flex { display: flex; width: fit-content; } .flex { display: flex; }
.flex-col { flex-direction: column; } .flex-col { flex-direction: column; }
.gap-2 { gap: calc(var(--space) * 2); } .gap-2 { gap: calc(var(--space) * 2); }
@@ -42,18 +43,32 @@ ul {
.self-start { align-self: flex-start; } .self-start { align-self: flex-start; }
.justify-between { justify-content: space-between; }
.w-fit { width: fit-content; }
.items-center { align-items: center; }
.font-extralight { font-weight: 200; }
.font-light { font-weight: 300; } .font-light { font-weight: 300; }
.font-normal { font-weight: 400; } .font-normal { font-weight: 400; }
.font-heavy { font-weight: 500; } .font-heavy { font-weight: 500; }
.max-w-md { .max-w-md {
max-width: calc(var(--space) * 200); max-width: calc(var(--space) * 180);
@media (max-width: 1024px) { @media (max-width: 1024px) {
max-width: calc(var(--space) * 400); max-width: calc(var(--space) * 360);
} }
} }
/* tailwind lite */ /* tailwind lite */
.small {
font-size: 16px;
@media (max-width: 1024px) {
font-size: 32px;
}
}
.big { .big {
font-size: 24px; font-size: 24px;
@media (max-width: 1024px) { @media (max-width: 1024px) {
@@ -70,6 +85,11 @@ ul {
transform: scale(1.25); transform: scale(1.25);
} }
.hover {
text-decoration: underline dotted;
text-decoration-thickness: 1px;
}
.logo { .logo {
object-fit: contain; object-fit: contain;
align-self: flex-start; align-self: flex-start;
+7 -3
View File
@@ -17,8 +17,9 @@
<div class="flex flex-col gap-2"> <div class="flex flex-col gap-2">
<h2 class="font-heavy big">terms</h2> <h2 class="font-heavy big">terms</h2>
<ul class="font-light"> <ul class="font-light">
<li>you agree that you will not use atom.town in any way that would negatively impact other users.</li> <li>you will not use atom.town in any way that would negatively impact other users, nor anyone else.</li>
<li>you agree that for any projects you host (or contribute to) on atom.town, llm usage will be sparse. largely unsupervised or unreviewed code is strongly prohibited.</li> <li>you will not use atom.town for bulk file storage (storing large files, or large volumes of files), even if such capabilities are present.</li>
<li>for any projects you host (or contribute to) on atom.town, llm usage will be <span title="while atom.town welcomes llms as a useful tool, they should be utilised sparingly, as it is all too easy to fall into the pit of overuse." class="hover">sparse</span>. largely unsupervised or unreviewed code is strongly prohibited.</li>
</ul> </ul>
</div> </div>
<div class="flex flex-col gap-2"> <div class="flex flex-col gap-2">
@@ -29,7 +30,10 @@
<li>atom.town does not share, nor ever will share any information it collects with any third parties, beyond what is absolutely necessary to run the service.</li> <li>atom.town does not share, nor ever will share any information it collects with any third parties, beyond what is absolutely necessary to run the service.</li>
</ul> </ul>
</div> </div>
<a href="/" class="self-start font-normal pop">← back</a> <div class="flex justify-between items-center">
<a href="/index.html" class="self-start font-normal pop">← back</a>
<p class="font-extralight small">updated 2026-07-24 (<a href="https://git.atom.town/atom/town/commits/branch/main/home/terms-privacy.html" target="_blank" class="small">history</a>)</p>
</div>
</div> </div>
</body> </body>
</html> </html>
+4 -4
View File
@@ -78,7 +78,7 @@ banner bottom "updated system"
# install misc # install misc
banner top "installing misc packages" banner top "installing misc packages"
sudo dnf install -y micro btop fastfetch policycoreutils-python-utils sudo dnf install -y micro btop gdu fastfetch policycoreutils-python-utils
curl -fsSL https://vykar.borgbase.com/install.sh | sh curl -fsSL https://vykar.borgbase.com/install.sh | sh
banner bottom "installed misc packages" banner bottom "installed misc packages"
@@ -109,14 +109,14 @@ banner bottom "installed cron"
banner top "configuring sshd" banner top "configuring sshd"
sudo tee /etc/ssh/sshd_config << 'EOF' sudo tee /etc/ssh/sshd_config << 'EOF'
Include /etc/ssh/sshd_config.d/*.conf Include /etc/ssh/sshd_config.d/*.conf
Port 67 Port 66
PermitRootLogin no PermitRootLogin no
PasswordAuthentication no PasswordAuthentication no
KbdInteractiveAuthentication no KbdInteractiveAuthentication no
EOF EOF
sudo semanage port -a -t ssh_port_t -p tcp 67 sudo semanage port -a -t ssh_port_t -p tcp 66
sudo systemctl restart sshd sudo systemctl restart sshd
banner bottom "configuring sshd" banner bottom "configuring sshd"
# finish # finish
echo -e "done! please log out and log back in with \e[1;5mssh -p 67 $(id -un)@$(curl -s https://checkip.amazonaws.com)\e[0m\n" echo -e "done! please log out and log back in with \e[1;5mssh -p 66 $(id -un)@$(curl -s https://checkip.amazonaws.com)\e[0m\n"
+15 -4
View File
@@ -8,19 +8,30 @@ function log() {
echo "[$(date -Iseconds)] $*" | tee -a "$LOG_FILE" echo "[$(date -Iseconds)] $*" | tee -a "$LOG_FILE"
} }
MODE="${1:-}"
if [[ "$MODE" != "cold" && "$MODE" != "hot" ]]; then
log "usage: $0 [cold|hot]" >&2
exit 1
fi
function cleanup() { function cleanup() {
log "cleanup: starting docker services" if [[ "$MODE" == "cold" ]]; then
log "starting docker services"
docker compose start || true docker compose start || true
fi
log "└───── backup finished ─────┘" log "└───── backup finished ─────┘"
} }
trap cleanup EXIT trap cleanup EXIT
log "┌────── backup started ─────┐" log "┌────── backup started ─────┐"
log "mode: $MODE"
cd "$WORKING_DIR" cd "$WORKING_DIR"
log "stopping docker services" if [[ "$MODE" == "cold" ]]; then
docker compose stop log "stopping docker services"
docker compose stop
fi
log "running backup" log "running backup"
/usr/local/bin/vykar backup /usr/local/bin/vykar backup 2>&1 | tee -a "$LOG_FILE"