главная|main page

состояние|status

блог|blog

файлы|files

программы|software

summaryrefslogtreecommitdiff
path: root/drafts/--pubnix.md
blob: 82f972d3240016e508e2c6b8cd0d43ae72b9e231 (plain)
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
Как настроить Pubnix

# Предисловие

Pubnix - это машина с общественным доступом, работающая на Unix. Грубо говоря, Pubnix - это как дешёвый хостинг на несколько пользователей.
Но понятие Pubnix шире, так как можно настроить такой без Web-сервера, или наоборот, дать каждому пользователю почтовый ящик, Jabber, собственный Web-сервер, возможность устанавливать свои программы...

Именно такой мы и собираемся настроить, поэтому приготовьтесь :)

# Требования
Системные:
- Машина (или даже контейнер, не пробовал) с Debian 12 **без граф. интерфейса** (когда выйдет новая версия, напишите)
- Отсутствие firewall-а или возможность его настроить (здесь нам нужен проброс портов, а для работы 1-1 звонков в XMPP - и вовсе отсутствие NAT), а также рекомендуется вместе с IPv4 иметь IPv6.
Прочие:
- Возможность и желание модерировать контент
- Соблюдение законодательства. Так как доступ по SSH без возможности проксировать заставляет [хакеров](https://www.gnu.org/philosophy/words-to-avoid.html#Hacker) чувствовать себя ограниченными (а если у вас провайдер добавляет ещё и свои блокировки?), можно попробовать сделать регистрацию либо по номеру телефона (правда, это будет дорого, т.к. гайки уже закручивают), либо по Госуслугам (придётся изменять программу для регистрации). Но (пока что) мы будем использовать архитипичную регистрацию по электронной почте.

# Шаг 1, базовая настройка
Вы установили Debian, и попали в root-оболочку. Все команды будут выполняться пользователем `root`, если не указано иначе.

Для начала, давайте будем каждого **нового** пользователя добавлять в группу `users`, это понадобится нам в будущем:
```sh
# /etc/adduser.conf
EXTRA_GROUPS="users"
ADD_EXTRA_GROUPS=1
```

# Шаг 2, Web-сервер
Если вы хотите разрешить пользователям размещать свой Web-сайт на вашем Pubnix, вам нужно установить Web-сервер. В данном примере мы будем использовать Caddy.

Установите Caddy:
```sh
apt install caddy
```

И измените настройки:
```caddy
{
	# Скрытия интерфейса администрирования
	admin unix//var/lib/caddy/.caddy-admin.sock
}

https://*.thoth.su {
	# Вам придётся выпустить эти сертификаты самостоятельно
	tls /etc/caddy/certs/cert.pem /etc/caddy/certs/key.pem

	# Не убирайте этот "host" (в Debian старая версия Caddy), а ещё поменяйте доменное имя
	#                    ↓                                              ↓
	@host header_regexp host Host ^(?:[a-zA-Z0-9]+\-)?([A-Za-z0-9]+)\.thoth\.su # Для поддоменов
	# ЛИБО
	@host path host ^\/\~(?:[a-zA-Z0-9]+\-)?([A-Za-z0-9]+) # Для классического подпути
	handle @host {
		root * /home/{re.host.2}/public_html_nocaddy
		#try_files {path}.html {path}.php {path}.htm {path} {path}/ =404
		try_files index.html / =404
		file_server
		encode gzip
		templates
	}
	handle_errors {
		reverse_proxy unix///home/{re.host.1}/.webserver.sock {
			health_status 2xx
			health_interval 5s
			health_timeout 60s
			#handle_errors {
			#	@502 expression {err.status_code} == 502
			#	handle @502 {
			#		respond * 502 {
			#			body "This site is either down or does not exist.
			#If this site really does exist, please make sure your Caddy is running. Try systemctl --user start caddy. It is also possible you have a config issue, if so, please reach out to us on Matrix.
			#"
			#		}
			#	}
			#}
		}
	}
}
```

Метки: keep-this-tag-format, tags-are-optional, beware-with-underscores-in-markdown, example