Установка Pterodactyl на Debian 10, часть 2

Этап 2

На предыдущем этапе мы сделали первоначальную настройку панели. Теперь настроим веб-сервер.
Вам следует удалить конфигурацию Apache или NGINX по умолчанию, поскольку она по умолчанию раскрывает секреты приложений злоумышленникам.
При использовании конфигурации SSL вы ДОЛЖНЫ создать сертификаты SSL, иначе ваш веб-сервер не запустится.
Для начала мы установим certbot, простой скрипт, который автоматически обновит сертификаты и позволит создавать их более аккуратно. Приведенная ниже команда предназначена для дистрибутивов Ubuntu, но вы всегда можете проверить официальный сайт Certbot для получения инструкций по установке. Я также включил команду ниже для установки плагина Certbot NGINX / Apache, чтобы вам не пришлось останавливать свой веб-сервер.
sudo apt update
sudo apt install -y certbot
# Запустите это, если вы используете Nginx
sudo apt install -y python3-certbot-nginx
# Запустите это, если вы используете Apache
sudo apt install -y python3-certbot-apache
После установки certbot нам нужно сгенерировать сертификат. Есть несколько способов сделать это, но самый простой — использовать только что установленный плагин certbot для конкретного веб-сервера.
Затем в приведенной ниже команде вы должны заменить example.com доменом, для которого вы хотите сгенерировать сертификат. Если у вас есть несколько доменов, для которых вы хотите получить сертификаты, просто добавьте в команду дополнительные флаги -d anotherdomain.com. Вы также можете изучить возможность создания подстановочного сертификата, но это не рассматривается в этом руководстве.
Поскольку мы используем плагин Certbot NGINX / Apache, вам не нужно перезапускать веб-сервер, чтобы применить сертификат (при условии, что вы уже настроили веб-серверы для использования SSL).
# Nginx
certbot certonly --nginx -d example.com
# Apache
certbot certonly --apache -d example.com
# Автономный - используйте, если ни один из них не работает. Обязательно сначала остановите свой веб-сервер при использовании этого метода.
certbot certonly --standalone -d example.com
Вы также, вероятно, захотите настроить автоматическое продление, добавив приведенную ниже команду в задание cron, которое выполняется ежедневно.
certbot renew
Если при попытке доступа к панели вы получаете сообщение о небезопасном соединении или связанную с ним ошибку, вероятно, срок действия сертификата SSL истек. Это можно легко исправить, обновив сертификат SSL, хотя использование команды certbot Renew не поможет. Так как это приведет к ошибке, например: Ошибка: при попытке обновить сертификат (домен) из /etc/letsencrypt/renew/domain.conf возникла непредвиденная ошибка. Это произойдет, особенно если вы используете NGINX вместо Apache. Решение — остановить NGINX, затем обновить сертификат и, наконец, перезапустить NGINX.
Остановите NGINX:
systemctl stop nginx
Продлите сертификат:
certbot renew
После завершения процесса вы можете перезапустить службу NGINX:
systemctl start nginx
Вы должны вставить содержимое файла ниже, заменив на ваше доменное имя, используемое в файле pterodactyl.conf, и поместить его в /etc/nginx/sites-available/, или — если в CentOS, /etc/nginx/conf.d/

NGINX без SSL

server {
listen 80;
server_name <domain>;

root /var/www/pterodactyl/public;
index index.html index.htm index.php;
charset utf-8;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }

access_log off;
error_log /var/log/nginx/pterodactyl.app-error.log error;

# allow larger file uploads and longer script runtimes
client_max_body_size 100m;
client_body_timeout 120s;

sendfile off;

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTP_PROXY "";
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}

location ~ /\.ht {
deny all;
}
}

NGINX с SSL

server_tokens off;

server {
listen 80;
server_name <domain>;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl http2;
server_name <domain>;

root /var/www/pterodactyl/public;
index index.php;

access_log /var/log/nginx/pterodactyl.app-access.log;
error_log /var/log/nginx/pterodactyl.app-error.log error;

# allow larger file uploads and longer script runtimes
client_max_body_size 100m;
client_body_timeout 120s;

sendfile off;

# SSL Configuration
ssl_certificate /etc/letsencrypt/live/<domain>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<domain>/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
ssl_prefer_server_ciphers on;

# See https://hstspreload.org/ before uncommenting the line below.
# add_header Strict-Transport-Security "max-age=15768000; preload;";
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header Content-Security-Policy "frame-ancestors 'self'";
add_header X-Frame-Options DENY;
add_header Referrer-Policy same-origin;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTP_PROXY "";
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
include /etc/nginx/fastcgi_params;
}

location ~ /\.ht {
deny all;
}
}

Apache2 без SSL

<VirtualHost *:80>
ServerName <domain>
DocumentRoot "/var/www/pterodactyl/public"
AllowEncodedSlashes On
php_value upload_max_filesize 100M
php_value post_max_size 100M
<Directory "/var/www/pterodactyl/public">
AllowOverride all
</Directory>
</VirtualHost>

Apache2 с SSL

<VirtualHost *:80>
ServerName <domain>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>
<VirtualHost *:443>
ServerName <domain>
DocumentRoot "/var/www/pterodactyl/public"
AllowEncodedSlashes On
php_value upload_max_filesize 100M
php_value post_max_size 100M
<Directory "/var/www/pterodactyl/public">
Require all granted
AllowOverride all
</Directory>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/<domain>/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<domain>/privkey.pem
</VirtualHost>
После того, как вы создали файл выше, просто выполните приведенные ниже команды. Если вы используете CentOS, вам не нужно выполнять приведенные ниже команды! Вам нужно только запустить systemctl restart httpd.
# Вам не нужно запускать какие-либо из этих команд в CentOS
sudo ln -s /etc/apache2/sites-available/pterodactyl.conf /etc/apache2/sites-enabled/pterodactyl.conf
sudo a2enmod rewrite
systemctl restart apache2

Установка Pterodactyl на Debian 10, часть 1

Этап 1

1. Установите PHP 8.
2. Установите Composer:
Composer — это менеджер зависимостей для PHP, который позволяет нам поставлять все, что вам понадобится для работы с панелью. Перед продолжением этого процесса вам понадобится установленный Composer.
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
3. Операции с файлами:
Первый шаг в этом процессе — создать папку, в которой будет располагаться панель, а затем переместиться в эту вновь созданную папку. Ниже приведен пример того, как выполнить эту операцию.
mkdir -p /var/www/pterodactyl
cd /var/www/pterodactyl
После того, как вы создали новый каталог для Panel и переместились в него, вам нужно будет загрузить файлы Panel. Это так же просто, как использовать curl для загрузки предварительно упакованного контента. После загрузки вам нужно будет распаковать архив и затем установить правильные разрешения для директорий storage/ и bootstrap/cache/. Эти каталоги позволяют нам хранить файлы, а также поддерживать быстрый кеш, чтобы сократить время загрузки.
curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz
tar -xzvf panel.tar.gz
chmod -R 755 storage/* bootstrap/cache/
Теперь, когда все файлы загружены, нам нужно настроить некоторые основные аспекты панели.

4. Конфигурация базы

Прежде чем продолжить, вам потребуется настройка базы данных и пользователь с соответствующими разрешениями, созданными для этой базы данных.
Первым шагом в этом процессе является вход в командную строку MySQL, где мы будем выполнять некоторые инструкции для настройки. Для этого просто выполните приведенную ниже команду и укажите пароль учетной записи Root MySQL, который вы установили при установке MySQL. Если вы не помните, что делали это, скорее всего, вы можете просто нажать Enter, поскольку пароль не установлен.
mysql -u root -p
В целях безопасности и из-за изменений в MySQL 5.7 вам необходимо создать нового пользователя для панели. Для этого мы сначала хотим указать MySQL использовать базу данных mysql, в которой хранится такая информация.
Затем мы создадим пользователя с именем pterodactyl и разрешим вход в систему с localhost, что предотвратит любые внешние подключения к базе данных. Вы также можете использовать % в качестве подстановочного знака или ввести числовой IP-адрес. Мы также установим пароль учетной записи somePassword. Смените somePassword на свой пароль.
USE mysql;
CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY 'somePassword';
Далее нам нужно создать базу данных для панели. В этом уроке мы будем называть базу данных panel, но вы можете заменить, ее каким-то именем, которое вы хотите.
CREATE DATABASE panel;
Наконец, нам нужно сообщить MySQL, что наш пользователь-птеродактиль должен иметь доступ к базе данных панели. Для этого просто запустите команду ниже. Если вы планируете также использовать этот экземпляр MySQL в качестве хоста базы данных на Panel, вы захотите включить опцию WITH GRANT OPTION (что мы и делаем здесь). Если вы не будете использовать этого пользователя как часть настройки хоста, вы можете удалить его.
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Если ваша база данных находится на другом хосте, чем тот, на котором установлена ваша панель или демон, убедитесь, что вы используете IP-адрес машины, на которой работает Panel. Если вы используете 127.0.0.1 и попытаетесь подключиться извне, вы получите сообщение об ошибке в соединении.
USE mysql;
# username - логин пользователя; password - ваш пароль
CREATE USER 'pterodactyluser'@'127.0.0.1' IDENTIFIED BY 'somepassword';
Приведенная ниже команда даст вашему вновь созданному пользователю возможность создавать дополнительных пользователей, а также создавать и уничтожать базы данных. Как указано выше, убедитесь, что 127.0.0.1 совпадает с IP-адресом, который вы использовали в предыдущей команде.
GRANT ALL PRIVILEGES ON *.* TO 'pterodactyluser'@'127.0.0.1' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Скорее всего, вам потребуется разрешить внешний доступ к этому экземпляру MySQL, чтобы серверы могли подключаться к нему. Для этого откройте my.cnf, расположение которого зависит от вашей ОС и способа установки MySQL. Вы можете ввести команду в терминал find / etc -iname my.cnf, чтобы найти его.
Откройте my.cnf, добавьте текст внизу в конец файла и сохраните его:
[mysqld]
bind-address=0.0.0.0
Перезапустите MySQL / MariaDB, чтобы применить эти изменения. Это переопределит конфигурацию MySQL по умолчанию, которая по умолчанию будет принимать запросы только от localhost. Обновление позволит подключаться ко всем интерфейсам и, следовательно, к внешним подключениям. Обязательно разрешите порт MySQL (по умолчанию 3306) в вашем брандмауэре.
Если ваша база данных и Wings находятся на одном компьютере и не требуют внешнего доступа, вы также можете использовать IP-адрес интерфейса docker0, а не 127.0.0.1. Этот IP-адрес можно найти, запустив ip addr | grep docker0, и он, скорее всего, выглядит как 172.x.x.x.

5. Конфигурация панели

Сначала мы скопируем наш файл настроек среды по умолчанию, установим основные зависимости, а затем сгенерируем новый ключ шифрования приложения.
cp .env.example .env
composer install --no-dev --optimize-autoloader
# Выполняйте приведенную ниже команду только в том случае, если вы устанавливаете
# эту панель впервые и у вас нет данных панели Pterodactyl в базе данных.
php artisan key:generate --force
Создайте резервную копию ключа шифрования (APP_KEY в файле .env). Он используется в качестве ключа шифрования для всех данных, которые необходимо надежно хранить (например, ключей API). Храните его в безопасном месте, а не только на сервере. Если вы потеряете его, все зашифрованные данные невозможно будет восстановить, даже если у вас есть резервные копии базы данных.
Базовая среда Pterodactyl легко настраивается с помощью нескольких различных команд интерфейса командной строки, встроенных в приложение. Этот шаг будет охватывать настройку таких вещей, как сеансы, кеширование, учетные данные базы данных и отправка электронной почты.
php artisan p:environment:setup
php artisan p:environment:database
# Чтобы использовать внутреннюю отправку почты PHP (не рекомендуется),
# выберите «mail». Чтобы использовать собственный SMTP-сервер, выберите «smtp».
php artisan p:environment:mail
Теперь нам нужно настроить все базовые данные для Panel в базе данных, которую вы создали ранее. Выполнение приведенной ниже команды может занять некоторое время в зависимости от вашего компьютера. Пожалуйста, НЕ выходите из процесса, пока он не будет завершен! Эта команда настроит таблицы базы данных, а затем добавит все гнезда и яйца, питающие птеродактиля.
php artisan migrate --seed --force
Затем вам нужно будет создать пользователя с правами администратора, чтобы вы могли войти в панель. Для этого выполните команду ниже. В настоящее время пароли должны соответствовать следующим требованиям: 8 символов, смешанный регистр, хотя бы одна цифра.
php artisan p:user:make
Последний шаг в процессе установки — установить правильные разрешения для файлов панели, чтобы веб-сервер мог их правильно использовать.
# При использовании NGINX или Apache (не в CentOS):
chown -R www-dаta:www-data /var/www/pterodactyl/*
# При использовании NGINX в CentOS:
chown -R nginx:nginx /var/www/pterodactyl/*
# Если вы используете Apache на CentOS
chown -R apache:apache /var/www/pterodactyl/*
Pterodactyl использует очереди, чтобы ускорить приложение и обрабатывать отправку электронных писем и другие действия в фоновом режиме. Вам нужно будет настроить обработчика очереди для обработки этих действий.
Первое, что нам нужно сделать, это создать новое задание cron, которое запускается каждую минуту для обработки определенных задач Pterodactyl, таких как очистка сеанса и отправка запланированных задач демонам. Вы захотите открыть свой crontab с помощью sudo crontab -e, а затем вставьте строку ниже.
* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1
Затем вам нужно создать нового рабочего systemd, чтобы наш процесс очереди работал в фоновом режиме. Эта очередь отвечает за отправку электронных писем и выполнение многих других фоновых задач для Pterodactyl.
Создайте файл pteroq.service в /etc/systemd/system со следующим содержимым.
# Pterodactyl Queue Worker File
# ----------------------------------

[Unit]
Description=Pterodactyl Queue Worker
After=redis-server.service

[Service]
# В некоторых системах пользователь и группа могут отличаться.
# Некоторые системы используют apache или nginx в качестве пользователя и группы.
User=www-data
Group=www-data
Restart=always
ExecStart=/usr/bin/php /var/www/pterodactyl/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3

[Install]
WantedBy=multi-user.target
Если вы используете CentOS, вам нужно будет заменить redis-server.service на redis.service в строке After=, чтобы обеспечить запуск redis до того, как заработает обработчик очереди.
Если вы ни для чего не используете redis, вам следует удалить строку After =, иначе вы столкнетесь с ошибками при запуске службы.
Если вы используете Redis для своей системы, вам нужно обязательно включить его запуск при загрузке. Вы можете сделать это, выполнив следующую команду:
sudo systemctl enable --now redis-server
Наконец, включите службу и установите ее для загрузки при запуске машины.
sudo systemctl enable --now pteroq.service

Как настроить обратный прокси Nginx в Ubuntu/Debian

Обратный прокси-сервер Nginx HTTPS — это промежуточная прокси-служба, которая принимает запрос клиента, передает его одному или нескольким серверам, а затем доставляет ответ сервера обратно клиенту. Хотя большинство распространенных приложений могут работать как веб-серверы сами по себе, веб-сервер Nginx может предоставлять ряд расширенных функций, таких как балансировка нагрузки, возможности TLS/SSL и ускорение, которых не хватает большинству специализированных приложений. Используя обратный прокси-сервер Nginx, все приложения могут воспользоваться этими функциями.

Преимущества использования обратного прокси Nginx на экземпляре

Установка обратного прокси-сервера Nginx HTTPS дает важные преимущества:
  • Балансировка нагрузки: обратный прокси-сервер Nginx может выполнять балансировку нагрузки, которая помогает равномерно распределять клиентские запросы между внутренними серверами. Это также улучшает избыточность, так как если один сервер выходит из строя, обратный прокси просто перенаправляет запросы на другой сервер в соответствии с политикой маршрутизации.
  • Повышенная безопасность: обратный прокси-сервер Nginx также действует как линия защиты для ваших внутренних серверов. Настройка обратного прокси-сервера гарантирует, что идентификационные данные ваших внутренних серверов останутся неизвестными.
  • Лучшая производительность: известно, что Nginx лучше работает при доставке файлов статического содержимого и анализе URL-адресов.
  • Простота ведения журнала и аудита: поскольку при реализации обратного прокси-сервера Nginx существует только одна точка доступа, это значительно упрощает ведение журнала и аудит.
  • Зашифрованное соединение. Шифрование соединения между клиентом и обратным прокси-сервером Nginx с помощью TLS позволяет пользователям использовать зашифрованное и защищенное соединение HTTPS, защищая свои данные.

Требования

  • У вас есть привилегии sudo или доступ к пользователю root.
  • У вас есть веб-приложение, работающее на нестандартном веб-порту экземпляра.
  • У вас есть вычислительный экземпляр, на котором запущен Ubuntu или Debian.
  • Убедитесь, что ваше доменное имя указывает на IP-адрес вашего сервера (запись A или AAAA).

Установка и настройка Nginx

Примечание. Для этого руководства требуется, чтобы на вашем экземпляре уже было запущено веб-приложение. Вы можете, например, установить легкий веб-сервер, такой как Webfsd, который по умолчанию работает на порту 8000, чтобы к нему можно было подключиться через стандартные порты HTTP через прокси. При необходимости его можно установить с помощью apt install webfs.

В следующем примере мы настроим обратный прокси Nginx перед веб-сервером Apache. В результате мы предполагаем, что Apache уже установлен и настроен (на той же машине).

1. Обновите кеш пакетов APT и установите веб-сервер Nginx через диспетчер пакетов:
apt update
apt install nginx
2. Отключите виртуальный хост по умолчанию, который предварительно настроен при установке Nginx через диспетчер пакетов apt:
unlink /etc/nginx/sites-enabled/default
3. Войдите в каталог /etc/nginx/sites-available и создайте файл конфигурации обратного прокси.
cd /etc/nginx/sites-available
nano reverse-proxy.conf
4. Вставьте следующую конфигурацию Nginx в текстовый редактор. Прокси-сервер перенаправляет все входящие соединения на порт 80 на сервер Webfsd, прослушивая порт 8000. Измените значение порта в зависимости от порта конкретного приложения.
server {
listen 80;
listen [::]:80;

access_log /var/log/nginx/reverse-access.log;
error_log /var/log/nginx/reverse-error.log;

location / {
    proxy_pass http://127.0.0.1:8000;
    }
}
Примечание. Доступы и ошибки находятся в файлах журнала в /var/log/nginx.

5. Скопируйте конфигурацию из /etc/nginx/sites-available в /etc/nginx/sites-enabled. Рекомендуется использовать символическую ссылку.
ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf
6. Протестируйте файл конфигурации Nginx
nginx -t
который должен вернуть
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
7. Откройте веб-браузер на локальном компьютере и вставьте свой общедоступный IP-адрес, который будет отображать домашнюю страницу вашего веб-приложения.

Добавление TLS к обратному прокси-серверу Nginx с помощью Let's Encrypt

Убедитесь, что ваше доменное имя указывает на IP-адрес вашего сервера (запись A или AAAA). В противном случае будет ошибка.

При текущей настройке весь входящий трафик на стандартном незащищенном HTTP-порту обслуживается Nginx, который передает его веб-приложению на экземпляре.

По соображениям безопасности рекомендуется добавить уровень шифрования с TLS / SSL и использовать HTTPS. Хотя использование самозаверяющих сертификатов технически возможно, это может вызвать очень неудобства, поскольку при использовании самозаверяющего сертификата в веб-браузере пользователя по умолчанию отображается предупреждение. Сертификат аутентификации (CA) может выдавать доверенные сертификаты, которые распознаются большинством современных веб-браузеров. CA Let’s Encrypt предоставляет сертификат TLS бесплатно, а настройку Nginx можно легко выполнить с помощью Certbot, инструмента, предоставляемого EFF.

1. Установите Certbot на свой экземпляр с помощью диспетчера пакетов APT:
apt-get update
apt-get install software-properties-common
apt-get update
apt-get install python-certbot-nginx
2. Certbot предоставляет плагин, разработанный для веб-сервера Nginx, автоматизирующий большую часть работы по настройке, связанной с запросом, установкой и управлением сертификатом TLS:
certbot --nginx
3. Ответьте на запросы, отображаемые на экране, чтобы запросить действительный сертификат Let's Encrypt:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: your.domain.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for your.domain.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/reverse-proxy.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/reverse-proxy.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://your.domain.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=your.domain.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Когда вас спросят, хотите ли вы автоматически перенаправлять HTTP-трафик на HTTPS, выберите вариант 2. Это включает автоматическое перенаправление всех входящих запросов через незашифрованное HTTP-соединение на безопасное HTTPS-соединение. Обеспечение дополнительного уровня безопасности для веб-приложения, работающего за обратным прокси-сервером Nginx.

Установка Free Pascal Compiler на Debian/Ubuntu

Free Pascal — это универсальный компилятор Pascal с открытым исходным кодом. Он может ориентироваться на многие архитектуры процессоров: Intel x86 (16 и 32 бит), AMD64 / x86-64, PowerPC, PowerPC64, SPARC, SPARC64, ARM, AArch64, MIPS, Motorola 68k, AVR и JVM. Поддерживаемые операционные системы включают Windows (16/32/64 бит, CE и собственный NT), Linux, Mac OS X / iOS / iPhoneSimulator / Darwin, FreeBSD и другие варианты BSD, DOS (16 бит или 32 бит DPMI), ОС / 2, AIX, Android, Haiku, Nintendo GBA / DS / Wii, AmigaOS, MorphOS, AROS, Atari TOS и различные встроенные платформы. Кроме того, в разрабатываемой версии доступна поддержка архитектур RISC-V (32/64), Xtensa и Z80, а также инфраструктуры компилятора LLVM. Кроме того, команда Free Pascal поддерживает транспилятор для паскала в jаvascript, называемый pas2js.

Пакет компилятора Free Pascal в операционных системах Debian и Ubuntu называется fpc. Устанавливается он во всех случаях одинаково, так как входит в стандартный комплект всех последних версий Debian/Ubuntu.

Установка
1. Обновляем репозитории.
apt-get update
2. Подтягиваем нужные пакеты.
2.1. Для систем без sudo или для root:
apt-get install fpc -y
2.2. Для систем с sudo или обычным пользователем:
sudo apt-get install fpc -y
3. Проверяем установку, просто написав имя компилятора. Он попросит нажимать Enter и выдаст все команды, которыми можно оперировать.
root@crow ~ # fpc
Free Pascal Compiler version 3.0.4+dfsg-22 [2019/01/24] for x86_64
Copyright (c) 1993-2017 by Florian Klaempfl and others
/usr/bin/x86_64-linux-gnu-fpc-3.0.4 [options] <inputfile> [options]
 Only options valid for the default or selected platform are listed.
 Put + after a boolean switch option to enable it, - to disable it.
Вот и все, мы установили Free Pascal Compiler (fpc) на ваш VDS иил выделенный сервер.

Как обновиться на Debian 12

Debian 12 кодовое имя «Bookworm» (книжный червь) — это следующая система за Debian 11. На нее можно обновиться уже сейчас. Учтите, что еще не все панели управления обновились до Debian 12, так что ее можно использовать разве что для сборки и отладки приложений, а еще для того чтобы потыкаться.

Обновиться с Debian 11 можно, поменяв в /etc/apt/sources.list содержимое с такого
deb http://deb.debian.org/debian bullseye main
deb-src http://deb.debian.org/debian bullseye main
deb http://security.debian.org/debian-security bullseye-security main
deb-src http://security.debian.org/debian-security bullseye-security main
deb http://deb.debian.org/debian bullseye-updates main
deb-src http://deb.debian.org/debian bullseye-updates main
deb http://deb.debian.org/debian bullseye-backports main
deb-src http://deb.debian.org/debian bullseye-backports main
на такое
deb http://deb.debian.org/debian bookworm main
deb-src http://deb.debian.org/debian bookworm main
deb http://security.debian.org/debian-security bookworm-security main
deb-src http://security.debian.org/debian-security bookworm-security main
deb http://deb.debian.org/debian bookworm-updates main
deb-src http://deb.debian.org/debian bookworm-updates main
deb http://deb.debian.org/debian bookworm-backports main
deb-src http://deb.debian.org/debian bookworm-backports main
Затем выполните команды:
apt update
apt upgrade -y
apt full-upgrade -y
На вопрос, хотите ли вы автоматически перезапускать службы во время обновления, отвечайте «Yes» или «Да».

После этого выполните перезагрузку и вы в Debian 12.
reboot
Тестилось на стенде с Debian 12, расположенном в ДЦ Gravelines.

Как установить сервер GTA San Andreas Multiplayer на Debian/Ubuntu Linux

Сперва надо пойти на files.sa-mp.com и скачать оттуда архив с нужными данными.
mkdir server ; cd server
wget http://files.sa-mp.com/samp037svr_R2-2-1.tar.gz
Теперь распакуем архив и переместим данные в корень папки.
tar xvfz samp037svr_R2-2-1.tar.gz
cd samp03 ; mv * ..
Теперь удалим ненужное.
cd ..
rm -rfv samp03
rm -rfv *.tar.gz
Осталось задать нужные разрешения.
chmod 775 announce samp03svr samp-npc
Мы поставили основу — скачали основные файлы с sa-mp.com. Но нам нужен собственный мод! Поэтому мы сделаем следующее.
Переходим в
/root/samp03
/root/ — это та папка, куда вы распаковали архив с files.sa-mp.com. У вас может быть своя.
Удаляем там ТОЛЬКО ПАПКИ! Файлы announce, samp03svr, samp-npc, и server.cfg НЕ ТРОГАЕМ!
Заливаем только свои папки, файлы не заливаем.
Идем в файл server.cfg:
nano server.cfg
В строке rcon_password меняем пароль на свой — это пароль для управления из консоли удаленного доступа, поэтому ставьте пароль получше: если забанят из консоли то придется делать остановку сервера, что не айс.
В строке gamemode0 пишем название файла мода, например arizona
Если вы хотите видеть сообщения сервера в консоли Linux, в конце файла добавляем параметр output 1
Нажимаем F3, затем Enter, затем F2.

Устанавливаем screen

apt-get install screen -y
Пишем: screen. Потом жмем Enter и пишем:
./samp03svr
Если сервер запустится, то все сделано верно. Иначе заходим в папку gamemodes или в саму папку с сервером и смотрим что там есть, а также смотрим логи.
В конце последним штрихом нажимаем сочетание клавиш CTRL+A, затем CTRL+D. В терминале должно быть написано Detached.

Кроссгрейд Debian

То что я тут покажу – это вполне необычный способ обновить ОС до 64-бит системы, но он работает.
Первый выпуск Debian с функцией Multiarch – это Wheezy, поэтому вам нужно будет выполнить обновление, прежде чем пытаться выполнить процедуру, описанную здесь.
Полное резервное копирование также настоятельно рекомендуется, так как эта процедура все еще находится в стадии разработки. Переустановка все еще более безопасный вариант. Вы были предупреждены!
Это шаги для преобразования установки i386 в amd64, но они могут применяться для любых других пар архитектуры, если ваша машина может работать как (например, armel и armhf). Вы можете использовать arch-test, чтобы определить, какие архитектуры Debian может работать ваша система. Вы можете установить поддержку добавления qemu-user-static для других архитектур Debian.

1. Добавим новую архитектуру в ОС

# dpkg --print-architecture i386
# dpkg --add-architecture amd64
# dpkg --print-foreign-architectures amd64
# apt-get update

2. Установим подходящее ядро и перезагрузимся

# apt-get install linux-image-amd64:amd64
# reboot
Внимание! Убедитесь, что вы действительно запускаете новое ядро, прежде чем переходить к следующим шагам (uname -a).

3. Синхронизуем пакеты между дистрибутивами

Сначала необходимо обновить или иным образом проверить все версии пакетов, подлежащие перекрестной интеграции, на этом шаге, чтобы убедиться, что все пакеты amd64 / i386 синхронизированы по версии, в противном случае перекрестная оценка будет нарушена.

4. Кроссгрейдим пакеты установщиков tar, dpkg, apt

Получите все пакеты, необходимые для замены dpkg, tar и apt, затем установите их для новой архитектуры. Это изменение dpkg, которое на самом деле «рассчитывает» на изменение арки по умолчанию. Tar должен быть заменен на dpkg, а не на apt, в противном случае он будет удален, тогда не будет tar, с которым можно было бы исправить положение.
# apt-get --download-only install dpkg:amd64 tar:amd64 apt:amd64
# dpkg --install /var/cache/apt/archives/*_amd64.deb
# dpkg --print-architecture amd64
# dpkg --print-foreign-architectures i386
# apt-get update
Кроссгрейдим зависимости
Если вы дошли до этого уровня, то теперь вы эффективно запускаете amd64, но в основном с пакетами i386. Вы можете попробовать заменить их на соответствующие пакеты amd64. Если это не сработает (еще не все библиотеки обязательно будут конвертированы в Multiarch), можно удалить пакет i386 и установить вместо него версию amd64. Один довольно жестокий способ сделать swap:
dpkg --get-selections | grep :i386 | sed -e s/:i386/:amd64/ | dpkg --set-selections
apt-get -f install
Вам нужно будет ввести «Yes, do as I say», чтобы получить такую возможность.