Mercurial > Pritunl-Fake-API
diff docs/nginx/install.md @ 0:b51518614818 default tip
New Files
author | Pluto <meokcin@gmail.com> |
---|---|
date | Tue, 03 Sep 2024 15:57:25 +0800 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/nginx/install.md Tue Sep 03 15:57:25 2024 +0800 @@ -0,0 +1,105 @@ +# HowTo install the selfhost api variant on Nginx + +## Easy way: +Use docker and docker-compose files provided in `docker/api-only` folder. + +See documentation [Docker Install](docs/docker/api-only-install.md). + +The docker compose file has a detailed help in its top too. Read and Roll :) + + +## Hard way: +First, you need to install Nginx. +```bash +sudo apt-get install nginx +``` + +After that, install all of the relevant PHP modules: + +```bash +sudo apt-get -y install php7.4-fpm php7.4-mysql php7.4-curl php7.4-gd php7.4-intl php-pear php-imagick php7.4-imap php-memcache +``` + +Then install certbot for free SSL certs: +```bash +sudo apt-get install -y certbot python3-certbot-nginx +``` + +After this, create a basic site config for the fake api server. Do this by creating a file under /etc/nginx/sites-available/ and create a symbolic link to /etc/nginx/sites-enabled. +You can refer to the provided Nginx server block available in: +`<repo_root>/docker/api-only/conf.d/pritunl-fake-api.conf` + +Then generate an SSL certificate for the website with certbot. +```bash +sudo certbot --nginx -d [PUBLIC_ACCESSIBLE_API_DOMAIN] +``` + +Once this is done, you should check if you have all the required loaded PHP modules for this server. You can check this by running php -m, and the output should list your PHP modules. + +the output should look be something like: +```bash +#... + core_module (static) + so_module (static) + watchdog_module (static) + http_module (static) + log_config_module (static) + logio_module (static) + version_module (static) + unixd_module (static) + access_compat_module (shared) + alias_module (shared) + auth_basic_module (shared) + authn_core_module (shared) + authn_file_module (shared) + authz_core_module (shared) + authz_host_module (shared) + authz_user_module (shared) + autoindex_module (shared) + deflate_module (shared) + dir_module (shared) + env_module (shared) + filter_module (shared) + http2_module (shared) + mime_module (shared) + mpm_prefork_module (shared) + negotiation_module (shared) + php7_module (shared) + proxy_module (shared) + proxy_fcgi_module (shared) + reqtimeout_module (shared) + rewrite_module (shared) + setenvif_module (shared) + socache_shmcb_module (shared) + ssl_module (shared) + status_module (shared) + #... +``` + +Then clone this repository if you haven't done this already and cd into the root of the project: +```bash +git clone https://gitlab.simonmicro.de/simonmicro/pritunl-fake-api.git +cd ./pritunl-fake-api +``` + +After this is done, copy over the API server files to the server and set permissions. +```bash +sudo cp -R ./www/* /var/www/html/ +sudo chown www-data:www-data -R /var/www/html +sudo chmod -R 774 /var/www/html/ +``` + +For your convenience, a hardened Nginx configuration is provided to help you secure and improve your server, +Read it carefully before use and make sure you understand what it does. + +See: `<repo_root>/docs/nginx/hard_nginx.conf` + + +Then restart Nginx to make sure all of the configuration is loaded. +```bash +sudo systemctl restart nginx +``` + +Once this is done, you should get a response when you visit + + `https://[PUBLIC_ACCESSIBLE_API_DOMAIN]/notification`!