aboutsummaryrefslogtreecommitdiff
path: root/content/posts/2024-12-17-infra/index.md
blob: 4733211b9c0c85ca7e1e6346c9d4f3de419594e8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
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** — собственно, жесткий диск моего микросервера
- **Корпус с активным охлаждением** — не самое необходимое, но хотелось, чтобы
выглядело красиво
<!-- more -->
# Программное обеспечение

По сути, на первом уровне, установлены [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 — для разработки и хранения кода

Но об этом я расскажу в другой раз 😉