pacman -Syu
.apt update
, then apt upgrade
.git
: So you can clone this repository.nginx
: So you can run Nginx.php-fpm
: This is what allows Nginx to run (and show) PHP files.php-imagick
, imagemagick
: Image manipulation.php-apcu
: Caching module.php-curl
, curl
: Transferring data with URLs.php-mbstring
: String utils.certbot
, certbot-nginx
: ACME client. Used to create SSL certificates.
pacman -S nginx certbot php-imagick certbot-nginx imagemagick curl php-apcu git
apt install php-mbstring nginx certbot-nginx certbot php-imagick imagemagick php-curl curl php-apcu git
cd
to /etc/nginx
and make the conf.d/
directory if it doesn't exist:
Again, this guesses you're logged in as root.
cd /etc/nginx
ls -l conf.d/ # If ls shows conf.d, then it means it exists.
# If it does not, run:
mkdir conf.d
Make a file inside conf.d/
called 4get.conf
and place the following content:
First run touch conf.d/4get.conf
then nano conf.d/4get.conf
to open the nano editor: (Install it if it is not, or use another editor.)
server {
access_log /dev/null; # Search log file. Do you really need to?
error_log /dev/null; # Error log file.
# Change this if you have 4get in another folder.
root /var/www/4get;
# Change 'yourdomain' to your domain.
server_name www.yourdomain.com yourdomain.com;
# Port to listen to.
listen 80;
location @php {
try_files $uri.php $uri/index.php =404;
# Change the unix socket address if it's different for you.
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
# Change this to `fastcgi_params` if you use a debian based distribution.
include fastcgi.conf;
fastcgi_intercept_errors on;
}
location / {
try_files $uri @php;
}
location ~* ^(.*)\.php$ {
return 301 $1;
}
}
The above is a very basic configuration and thus will need tweaking to your personal needs. It should still work as-is, though. A 'real world' example is present in [^2].
After saving the file, check that the nginx.conf
file inside the main directory includes files inside conf.d/
:
It should be inside the the http block: (The following is an example! Don't just Copy and Paste it!)
http {
include mime.types;
include conf.d/*.conf;
types_hash_max_size 4096;
# ...
}
Now, test your configuration with nginx -t
, if it says that everything is good, restart (or start) the Nginx daemon:
This depends on the init manager, most distributions use systemd
, but it's better practice to include most.
# systemd
systemctl stop nginx
systemctl start nginxt
# or
systemctl restart nginx
# openrc
rc-service nginx stop
rc-service nginx start
# or
rc-service nginx restart
# runit
sv down nginx
sv up nginx
# or
sv restart nginx
# s6
s6-rc -d change nginx
s6-rc -u change nginx
# or
s6-svc -r /run/service/nginx
# dinit
dinitctl stop nginx
dinitctl start nginx
# or
dinitctl restart nginx
Clone the repository to /var/www
:
git clone --depth 1 https://git.lolcat.ca/lolcat/4get 4get
- It clones the repository with the depth of one commit (so it takes less time to download) and saves the cloned repository as '4get'.That should be it! There are some extra steps you can take, but it really just depends on you.
Generate a certificate for the domain you're using with:
Note that certbot-nginx
is needed.
certbot --nginx --key-type ecdsa -d www.yourdomain.com -d yourdomain.com
After that, certbot will deploy the certificate automatically to your 4get conf file; It should be ready to use from there.
server_names_hash_bucket_size
to your needs.
cd
to /etc/nginx
(if you haven't) and open your nginx.conf
file.# server_names_hash_bucket_size 64;
inside said file.Open (or duplicate the configuration) and edit it:
Example configuration, again:
server {
access_log /dev/null; # Search log file. Do you really need to?
error_log /dev/null; # Error log file.
# Change this if you have 4get in another folder.
root /var/www/4get;
# Change 'onionadress.onion' to your onion link.
server_name onionadress.onion;
# Port to listen to.
listen 80;
location @php {
try_files $uri.php $uri/index.php =404;
# Change the unix socket address if it's different for you.
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
# Change this to `fastcgi_params` if you use a debian based distribution.
include fastcgi.conf;
fastcgi_intercept_errors on;
}
location / {
try_files $uri @php;
}
location ~* ^(.*)\.php$ {
return 301 $1;
}
}
A real world example is present in [^2].
Once done, check the configuration with nginx -t
. If everything's fine and dandy, refer to the Tor guide to setup your onion site.
[^1]: lolcat/4get#40, If having issues with libsodium
, or php-apcu
.
[^2]: git.nadeko.net nadeko.net's 4get instance configuration.