From 239da84e3b9d457e6a451a84622ac5b3d3b54ef0 Mon Sep 17 00:00:00 2001 From: Alexander Neonxp Kiryukhin Date: Tue, 17 Dec 2024 21:45:30 +0300 Subject: Auto-commit 2024-12-17 --- content/posts/2024-12-17-infra/cover.webp | Bin 0 -> 532556 bytes content/posts/2024-12-17-infra/index.md | 110 ++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 content/posts/2024-12-17-infra/cover.webp create mode 100644 content/posts/2024-12-17-infra/index.md diff --git a/content/posts/2024-12-17-infra/cover.webp b/content/posts/2024-12-17-infra/cover.webp new file mode 100644 index 0000000..c02c8be Binary files /dev/null and b/content/posts/2024-12-17-infra/cover.webp differ diff --git a/content/posts/2024-12-17-infra/index.md b/content/posts/2024-12-17-infra/index.md new file mode 100644 index 0000000..bb83506 --- /dev/null +++ b/content/posts/2024-12-17-infra/index.md @@ -0,0 +1,110 @@ ++++ +title = "Инфраструктура блога" +description = "" +date = 2024-12-17T21:07:53+03:00 +categories = [ "Мета" ] +tags = [ "блог", "IT" ] +location = "Казань" +image="cover.webp" ++++ + +Сегодня я хочу рассказать как устроен этот блог и вообще моя инфраструктура. + +## Сервер + +Во-первых, недавно я почти полностью переехал с арендуемого сервера, на свой +собственный, сервер, который просто стоит у меня в комнате. + +Именно он вынесен в заголовочное изображение и целиком помещается, даже не на +ладони, а просто на кончиках пальцев! + +Конкретно, железо: + +- **OrangePi 3B 8Gb** — выбран в первую очередь за свою дешевизну и, самое +главное, M.2 разъём +- **NVME SSD 1Tb** — собственно, жесткий диск моего микросервера +- **Корпус с активным охлаждением** — не самое необходимое, но хотелось, чтобы +выглядело красиво + +## Программное обеспечение + +По сути, на первом уровне, установлены [armbian](https://www.armbian.com/orangepi3b/), [веб—сервер Caddy](https://caddyserver.com/), да [Docker](https://devdotnet.org/post/ustanovka-docker-dlya-arm-i-64-bit-arm-armbian-linux/). +Всё остальное уже внутри Docker'а. + +## Caddy + +Caddy у меня работает в основном как reverse-proxy для Docker'а. +Без лишних слов, вот конфиг: + +``` +{ + log { + output file /var/log/caddy/access.log + level debug + } + email i@neonxp.ru +} +neonxp.ru:80 { + redir https://neonxp.ru +} +neonxp.ru:443 { + tls i@neonxp.ru + root * /var/www/neonxp.ru + encode gzip + rewrite /feed/ /posts/index.xml + file_server +} +comments.neonxp.ru { + reverse_proxy localhost:8008 + tls i@neonxp.ru +} +``` + +Из него я убрал всё, что не относится к непосредственно блогу. + +Сам блог у меня собирается с помощью Hugo и загружается в `/var/www/neonxp.ru` +(https://git.neonxp.ru/blog.git/tree/Makefile#n11)[с помощью rsync], а оттуда уже раздается с помощью Caddy. + +# Docker + +А вот и мой compose в котором разворачивается остальная инфраструктура для блога + +```yaml +services: + remark42: + image: umputun/remark42:latest + restart: unless-stopped + container_name: "remark42" + ports: + - 8008:8080 + env_file: remark42.env + volumes: + - remark42:/srv/var + posse: + image: registry.neonxp.ru/posse + restart: unless-stopped + container_name: posse + env_file: posse.env + volumes: + - ./seq.txt:/store/seq.txt +volumes: + remark42: +``` + +Как понятно из этого docker-compose.yml — дополнительно поднимаются два +контейнера: + +- remark42 — система комментариев +- posse — моя программка, которая чекает RSS блога и репостит его в Telegram + +# Остальное + +Конечно же, на этой железке крутится не только блог, но и несколько других +сервисов для личного использования + +- Nextcloud — личное облако +- Vaultwarden — хранилище паролей +- SOPDS — личная библиотека Либрусека +- Git хостинг и Container registry — для разработки и хранения кода + +Но об этом я расскажу в другой раз 😉 \ No newline at end of file -- cgit v1.2.3