+++ 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` [с помощью rsync](https://git.neonxp.ru/blog.git/tree/Makefile#n11), а оттуда уже раздается с помощью 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 — для разработки и хранения кода Но об этом я расскажу в другой раз 😉