From 51f37c11a95e6e7e280a068b05b5416cf6b3911f Mon Sep 17 00:00:00 2001 From: Alex Emmet <111742636+Alex-Emmet@users.noreply.github.com> Date: Wed, 22 Apr 2026 23:05:01 +0200 Subject: [PATCH] [Add] Docker compose [Add] setup.sh [Add] mewjo, xlagging as Mod's [Add] T1X's icon [Fix] Some QOL --- .gitignore | 2 -- docker-compose.yml | 16 ++++++++++++++++ rust-web.service | 13 +++++++++++++ server/src/main.rs | 6 ------ setup.sh | 1 + website/api/posts.json | 8 ++++---- website/api/staff.json | 28 +++++++++++++++------------- website/api/teams.json | 8 ++++---- website/app.js | 1 - website/assets/cashius_to.png | Bin 0 -> 7208 bytes website/assets/mewjo_.png | Bin 0 -> 6560 bytes website/assets/xlagging.png | Bin 0 -> 6562 bytes 12 files changed, 53 insertions(+), 30 deletions(-) create mode 100644 docker-compose.yml create mode 100644 rust-web.service create mode 100644 setup.sh create mode 100644 website/assets/cashius_to.png create mode 100644 website/assets/mewjo_.png create mode 100644 website/assets/xlagging.png diff --git a/.gitignore b/.gitignore index 8c4ee38..b86aff8 100644 --- a/.gitignore +++ b/.gitignore @@ -7,5 +7,3 @@ **.jsonl **.ignore.** snapshot* -cert.pem -key.pem diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..3e27842 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,16 @@ +services: + app: + image: "jc21/nginx-proxy-manager:latest" + restart: unless-stopped + + ports: + - "80:80" + - "443:443" + - "81:81" + + environment: + TZ: "Australia/Brisbane" + + volumes: + - ./data:/data + - ./letsencrypt:/etc/letsencrypt diff --git a/rust-web.service b/rust-web.service new file mode 100644 index 0000000..d52f71e --- /dev/null +++ b/rust-web.service @@ -0,0 +1,13 @@ +[Unit] +Description=Webserver +After=network.target + +[Service] +Type=simple +User=root +WorkingDirectory=/root/Anarchyphase-Website/server +ExecStart=/usr/bin/cargo run +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/server/src/main.rs b/server/src/main.rs index 23b9a6a..74cd573 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -6,7 +6,6 @@ use axum::{ response::{IntoResponse, Response}, routing::get, }; -use axum_server::tls_rustls::RustlsConfig; use std::net::SocketAddr; use std::path::PathBuf; use tokio::fs; @@ -91,11 +90,6 @@ async fn main() { axum::serve(listener, http_app).await.unwrap(); }); - // HTTPS on port 443 - let certs_dir = website_root.join("certs"); - let cert_path = certs_dir.join("cert.pem"); - let key_path = certs_dir.join("key.pem"); - http_handle.await.unwrap(); } diff --git a/setup.sh b/setup.sh new file mode 100644 index 0000000..26aae23 --- /dev/null +++ b/setup.sh @@ -0,0 +1 @@ +sudo bash -c "apt update && apt install -y build-essential curl pkg-config libssl-dev && apt install cargo && apt update && apt upgrade -y && apt install docker.io docker-compose && systemctl enable --now docker && systemctl disable --now nginx && cd /root/Anarchyphase-Website && docker-compose up -d && ufw allow 81" diff --git a/website/api/posts.json b/website/api/posts.json index f26d1e6..c2944cf 100644 --- a/website/api/posts.json +++ b/website/api/posts.json @@ -20,7 +20,7 @@ { "date": "2026-04-21, by AlexEmmet", - "head_img": "horse_rainbow.png", + "head_img": "village_sunset.png", "file": "Home.md", "title": "The /Home command", @@ -29,7 +29,7 @@ { "date": "2026-04-21, by AlexEmmet", - "head_img": "horse_rainbow.png", + "head_img": "village_sunset.png", "file": "ThisWebsite.md", "title": "About This Website", @@ -38,10 +38,10 @@ { "date": "2026-04-21, by AlexEmmet", - "head_img": "horse_rainbow.png", + "head_img": "village_sunset.png", "file": "AlexsOpinion.md", "title": "Alex's Opinion", - "description": "The Anarchyphase balance Changes" + "description": "The Anarchyphase balance Changes." } ] diff --git a/website/api/staff.json b/website/api/staff.json index cdc7a17..30699a1 100644 --- a/website/api/staff.json +++ b/website/api/staff.json @@ -2,54 +2,56 @@ { "icon": "morice.png", "name": "MoriceMC", - "priority": 0, "role": "Owner & Lead Developer" }, { "icon": "ninivx.png", "name": "NiniVX", - "priority": 1, "role": "Community Manager" }, { "icon": "burrata.png", "name": "Burrata", - "priority": 1, "role": "Administrator" }, { "icon": "pitrex.png", "name": "Pitrex", - "priority": 2, "role": "Moderator & Developer" }, + { + "icon": "cashius_to.png", + "name": "T1X", + "role": "Moderator (Yellow Bomb Guy)" + }, { "icon": "litus.png", "name": "Litus", - "priority": 2, "role": "Moderator" }, { "icon": "ahnyokatzin.png", "name": "Ahnyokatzin", - "priority": 2, - "role": "Moderator" - }, - { - "name": "T1X", - "priority": 2, "role": "Moderator" }, { "icon": "harrpyrose.png", "name": "Harrpy", - "priority": 2, "role": "Moderator" }, { "icon": "alexemmet.png", "name": "AlexEmmet", - "priority": 3, "role": "Web-Developer & Critic (Professional Hater)" + }, + { + "icon": "xlagging.png", + "name": "xLagging", + "role": "Moderator & Developer" + }, + { + "icon": "mewjo_.png", + "name": "Mewjo_", + "role": "Moderator" } ] diff --git a/website/api/teams.json b/website/api/teams.json index ed3412c..6d2ba90 100644 --- a/website/api/teams.json +++ b/website/api/teams.json @@ -21,7 +21,7 @@ "acronym": "", "leader": "Yippee", "vips": "Skely, xLeggings, Luxi", - "description": "Me when I Orb it", + "description": "Me when I Orb it.", "image": "village_sunset.png" }, { @@ -29,7 +29,7 @@ "acronym": "CT", "leader": "MoriceMC", "vips": "Yeah he's the owner", - "description": "We are number one", + "description": "We are number one!", "image": "icon.png", "discord": "directs/ct" }, @@ -38,7 +38,7 @@ "acronym": "", "leader": "Liwitikiwi", "vips": "", - "description": "Build borders to keep out foreign aliens", + "description": "Build borders to keep out hostiles. A safespace for builders.", "image": "outpost.png" }, { @@ -46,7 +46,7 @@ "acronym": "PPN", "leader": "Hamb_y", "vips": "", - "description": "Pact of Peace and neutrality lets anyone join no matter their team. Our goal is to promote peace within factions on the server", + "description": "Pact of Peace and neutrality lets anyone join no matter their team. Our goal is to promote peace within factions on the server!", "image": "mountain.png", "discord": "directs/pact" } diff --git a/website/app.js b/website/app.js index b62fd8c..5061362 100644 --- a/website/app.js +++ b/website/app.js @@ -129,7 +129,6 @@ async function loadStaff() { try { const response = await fetch("/api/staff.json"); const staff = await response.json(); - staff.sort((a, b) => a.priority - b.priority); const container = document.getElementById("staff-grid"); if (!container) return; diff --git a/website/assets/cashius_to.png b/website/assets/cashius_to.png new file mode 100644 index 0000000000000000000000000000000000000000..7449f280d2c176e2f13481e87ab21fb0ceffccd8 GIT binary patch literal 7208 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 L{an^LB{Ts5e(ATM literal 0 HcmV?d00001 diff --git a/website/assets/mewjo_.png b/website/assets/mewjo_.png new file mode 100644 index 0000000000000000000000000000000000000000..a599c257c723b38c4bb399c5e7e291c61215b088 GIT binary patch literal 6560 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 literal 0 HcmV?d00001 diff --git a/website/assets/xlagging.png b/website/assets/xlagging.png new file mode 100644 index 0000000000000000000000000000000000000000..ca4dbdd5332894b32c59a4f11ef4178c940e06b6 GIT binary patch literal 6562 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 ZKFVHin!}c7%nS?+44$rjF6*2UngHEQO*;Sp literal 0 HcmV?d00001