Как поднять свой LFH
LFH (LukaszFreeHosting) - бесплатный хостинг от меня, использующий контейнеризацию с podman.
Ограничения:
- 1 IP адресс для всех пользователей, кто первый займет порт, тот им владеет
- Количество используемых ядер, оперативная память и дисковая память ограничены. По умолчанию 1x CPU, 1G RAM, 3G ROM
- Статичное linux ядро хост машины
- Большиство CAP отключены, поэтому не получится запустить docker и т.п.
Чтобы получить доступ к хостингу, напишите мне. Напишите для чего вам нужен хостинг и на какие мощности вы расчитываете.
- podman
- VPS сервер с операционной системой linux
Чтобы ограничивать ROM нужен раздел с файловой системой XFS. Вместо отдельного раздела на диске можно использовать файл для создания виртуальной файловой системы.
mkdir lfh && cd lfh truncate -s 10G storage.img apt-get install -y xfsprogs mkfs.xfs storage.img mkdir storage mount storage.img storage -o defaults,loop,pquota
Добавьте в /etc/fstab строку чтобы автоматически монтировать storage.img при загрузке системы
$ nano /etc/fstab /root/lfh/storage.img /root/lfh/storage xfs defaults,loop,pquota 0 0
Отредактируйте /etc/containers/storage.conf чтобы podman хранил данные контейенров и образов в специальной директории
$ nano /etc/containers/storage.conf [storage] driver = "overlay" runroot = "/run/containers/storage" graphroot = "/root/lfh/storage"
Ключ graphroot секции storage отвечает за директорию для хранения данных
$ podman info | grep "Backing\ Filesystem\|graphRoot" graphRoot: /root/lfh/storage Backing Filesystem: xfs
Теперь можно приступить к установке самого LFH
git clone https://gitlab.com/tshelter/vm.git cd vm ./build.sh
Билд займет около 10 минут, зависит от скорости сети и мощности сервера
./create $os
Остальные параметры опциональные:
-n --name NAME указать имя контейнера -p --port PORT указать порт sshd -P --password PASSWORD указать пароль * по умолчанию генерируется случайный пароль --cpus CPUS указать количество ядер * по умолчанию 1.0 --memory MEMORY указать количество оперативной памяти * по умолчанию 1024m --size SIZE указать количество дисковой памяти * по умолчанию 3G --pids_limit PIDS_LIMIT указать максимально количество процессов * по умолчанию 10000 * нужен для защиты от fork бомб
./find.sh $pid
Используйте чтобы найти в каком контейнере запущен процесс с айди $pid
В случае root-less podman, использовать xfs нельзя. Для изменения квоты в xfs нужен root. Так же, для запуска systemd от обычного юзера, нужно ему это разрешить:
sudo loginctl enable-linger $USERNAME
Возможно, еще придется сделать это
Возможно, так же придется сменить программу для монтирования.
$ nano /home/$USERNAME/.config/containers/storage.conf [storage.options] mount_program = "/usr/bin/fuse-overlayfs"