readme
5
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
||||||
|
<<<<<<< HEAD
|
||||||
lib/test.html
|
lib/test.html
|
||||||
lib/postdata.json
|
lib/postdata.json
|
||||||
lib/nextpage.json
|
lib/nextpage.json
|
||||||
|
@ -21,3 +22,7 @@ scraper/soundcloud.json
|
||||||
scraper/mp3-pm.html
|
scraper/mp3-pm.html
|
||||||
banner/*
|
banner/*
|
||||||
!banner/*default*
|
!banner/*default*
|
||||||
|
=======
|
||||||
|
banner/*
|
||||||
|
!banner/*default*
|
||||||
|
>>>>>>> 77293818cd213ec0ad07c573d298fff9cd5b357d
|
||||||
|
|
122
README.md
|
@ -34,10 +34,15 @@ https://4get.ca
|
||||||
- Google
|
- Google
|
||||||
- Mojeek
|
- Mojeek
|
||||||
|
|
||||||
|
5. Music
|
||||||
|
- SoundCloud
|
||||||
|
|
||||||
More scrapers are coming soon. I currently want to add Hackernews, Qwant and find a way to scrape Yandex web without those fucking captchas. A shopping, music and files tab is also in my todo list.
|
More scrapers are coming soon. I currently want to add Hackernews, Qwant and find a way to scrape Yandex web without those fucking captchas. A shopping, music and files tab is also in my todo list.
|
||||||
|
|
||||||
# Setup
|
# Setup
|
||||||
This section is still to-do. You will need to figure shit out for some of the apache2 stuff. Everything else should be OK.
|
This section is still to-do. You will need to figure shit out for some of the apache2 and nginx stuff. Everything else should be OK.
|
||||||
|
|
||||||
|
## Apache
|
||||||
|
|
||||||
Login as root.
|
Login as root.
|
||||||
|
|
||||||
|
@ -69,9 +74,59 @@ chmod 777 -R icons/
|
||||||
|
|
||||||
Restart the service for good measure... `service apache2 restart`
|
Restart the service for good measure... `service apache2 restart`
|
||||||
|
|
||||||
|
## NGINX
|
||||||
|
|
||||||
|
Login as root.
|
||||||
|
|
||||||
|
Create a file in `/etc/nginx/sites-avaliable/` called `4get.conf` or any name you want and put this into the file:
|
||||||
|
|
||||||
|
```
|
||||||
|
server {
|
||||||
|
# DO YOU REALLY NEED TO LOG SEARCHES?
|
||||||
|
access_log /dev/null;
|
||||||
|
error_log /dev/null;
|
||||||
|
# Change this if you have 4get in other folder.
|
||||||
|
root /var/www/4get;
|
||||||
|
# Change yourdomain by your domain lol
|
||||||
|
server_name www.yourdomain.com yourdomain.com;
|
||||||
|
|
||||||
|
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 distro.
|
||||||
|
include fastcgi.conf;
|
||||||
|
fastcgi_intercept_errors on;
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri @php;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~* ^(.*)\.php$ {
|
||||||
|
return 301 $1;
|
||||||
|
}
|
||||||
|
|
||||||
|
listen 80;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
That is a very basic config so you will need to adapt it to your needs in case you have a more complicated nginx configuration. Anyways, you can see a real world example [here](https://git.zzls.xyz/Fijxu/etc-configs/src/branch/selfhost/nginx/sites-available/4get.zzls.xyz.conf)
|
||||||
|
|
||||||
|
After you save the file you will need to do a symlink of the `4get.conf` file to `/etc/nignx/sites-enabled/`, you can do it with this command:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ln -s /etc/nginx/sites-available/4get.conf /etc/nginx/sites-available/4get.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
Now test the nginx config with `nginx -t`, if it says that everything is good, restart nginx using `systemctl restart nginx`
|
||||||
|
|
||||||
## Setup encryption
|
## Setup encryption
|
||||||
I'm schizoid (as you should) so I'm gonna setup 4096bit key encryption. To complete this step, you need a domain or subdomain in your possession. Make sure that the DNS shit for your domain has propagated properly before continuing, because certbot is a piece of shit that will error out the ass once you reach 5 attempts under an hour.
|
I'm schizoid (as you should) so I'm gonna setup 4096bit key encryption. To complete this step, you need a domain or subdomain in your possession. Make sure that the DNS shit for your domain has propagated properly before continuing, because certbot is a piece of shit that will error out the ass once you reach 5 attempts under an hour.
|
||||||
|
|
||||||
|
### Apache
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
certbot --apache --rsa-key-size 4096 -d www.yourdomain.com -d yourdomain.com
|
certbot --apache --rsa-key-size 4096 -d www.yourdomain.com -d yourdomain.com
|
||||||
```
|
```
|
||||||
|
@ -98,11 +153,72 @@ Restart again
|
||||||
service apache2 restart
|
service apache2 restart
|
||||||
```
|
```
|
||||||
|
|
||||||
You'll probably want to setup a tor address at this point, but I'm too lazy to put instructions here.
|
### NGINX
|
||||||
|
|
||||||
|
Generate a certificate for the domain using:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
certbot --nginx --key-type ecdsa -d www.yourdomain.com -d yourdomain.com
|
||||||
|
```
|
||||||
|
(Remember to install the nginx certbot plugin!!!)
|
||||||
|
|
||||||
|
After doing that certbot should deploy the certificate automatically into your 4get nginx config file. It should be ready to use at that point.
|
||||||
|
|
||||||
Ok bye!!!
|
Ok bye!!!
|
||||||
|
|
||||||
|
## Tor Setup
|
||||||
|
|
||||||
|
1. Install tor.
|
||||||
|
2. Open `/etc/tor/torrc`
|
||||||
|
3. Go to the line that contains `HiddenServiceDir` and `HiddenServicePort`
|
||||||
|
4. Uncomment those 2 lines and set them like this:
|
||||||
|
```
|
||||||
|
HiddenServiceDir /var/lib/tor/4get
|
||||||
|
HiddenServicePort 80 127.0.0.1:80
|
||||||
|
```
|
||||||
|
5. Start the tor service using `systemctl start tor`
|
||||||
|
6. Wait some seconds...
|
||||||
|
7. Login as root and execute this command: `cat /var/lib/tor/4get/hostname`
|
||||||
|
8. That is your onion address.
|
||||||
|
|
||||||
|
After you get your onion address you will need to configure your Apache or Nginx config or you will get 404 errors.
|
||||||
|
|
||||||
|
I don't know to configure this shit on Apache so here is the NGINX one.
|
||||||
|
|
||||||
|
### NGINX
|
||||||
|
|
||||||
|
Open your current 4get NGINX config (that is under `/etc/nginx/sites-available/`) and append this to the end of the file:
|
||||||
|
|
||||||
|
```
|
||||||
|
server {
|
||||||
|
access_log /dev/null;
|
||||||
|
error_log /dev/null;
|
||||||
|
|
||||||
|
listen 80;
|
||||||
|
server_name <youronionaddress>;
|
||||||
|
root /var/www/4get;
|
||||||
|
|
||||||
|
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 distro.
|
||||||
|
include fastcgi.conf;
|
||||||
|
fastcgi_intercept_errors on;
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri @php;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~* ^(.*)\.php$ {
|
||||||
|
return 301 $1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Obviously replace `<youronionaddress>` by the onion address of `/var/lib/tor/4get/hostname` and then check if the nginx config is valid with `nginx -t` if yes, then restart the nginx service and try opening the onion address into the Tor Browser. You can see a real world example [here](https://git.zzls.xyz/Fijxu/etc-configs/src/branch/selfhost/nginx/sites-available/4get.zzls.xyz.conf)
|
||||||
|
|
||||||
## Docker Install
|
## Docker Install
|
||||||
|
|
||||||
|
@ -116,5 +232,3 @@ docker run -d -p 80:80 -p 443:443 -e FOURGET_SERVER_NAME="4get.ca" -e FOURGET_SE
|
||||||
replace enviroment variables FOURGET_SERVER_NAME and FOURGET_SERVER_ADMIN_EMAIL with relevant values
|
replace enviroment variables FOURGET_SERVER_NAME and FOURGET_SERVER_ADMIN_EMAIL with relevant values
|
||||||
|
|
||||||
the certs directory expects files named `cert.pem`, `chain.pem`, `privkey.pem`
|
the certs directory expects files named `cert.pem`, `chain.pem`, `privkey.pem`
|
||||||
|
|
||||||
|
|
||||||
|
|
22
about.php
|
@ -18,6 +18,19 @@ echo
|
||||||
'</head>' .
|
'</head>' .
|
||||||
'<body class="' . $frontend->getthemeclass(false) . 'about">';
|
'<body class="' . $frontend->getthemeclass(false) . 'about">';
|
||||||
|
|
||||||
|
include "data/instances.php";
|
||||||
|
$compiledinstancelist = "";
|
||||||
|
foreach ($instancelist as $instance)
|
||||||
|
{
|
||||||
|
$compiledinstancelist .= "<tr> <td>".$instance["name"]."</td>";
|
||||||
|
$compiledinstancelist .= "<td> <a href=\"".$instance["address"]["uri"]."\">".$instance["address"]["displayname"]."</a>";
|
||||||
|
foreach ($instance["altaddresses"] as $alt)
|
||||||
|
{
|
||||||
|
$compiledinstancelist .= "<a href=\"".$alt["uri"]."\">(".$alt["displayname"].")</a></td>";
|
||||||
|
}
|
||||||
|
$compiledinstancelist .= "</tr>";
|
||||||
|
}
|
||||||
|
|
||||||
$left =
|
$left =
|
||||||
'<a href="/" class="link">< Go back</a>
|
'<a href="/" class="link">< Go back</a>
|
||||||
|
|
||||||
|
@ -87,14 +100,7 @@ $left =
|
||||||
<td>Name</td>
|
<td>Name</td>
|
||||||
<td>Address</td>
|
<td>Address</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
'.$compiledinstancelist.'
|
||||||
<td>lolcat\'s instance (master)</td>
|
|
||||||
<td><a href="https://4get.ca">4get.ca</a><a href="http://4getwebfrq5zr4sxugk6htxvawqehxtdgjrbcn2oslllcol2vepa23yd.onion">(tor)</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>zzls\'s instance</td>
|
|
||||||
<td><a href="https://4get.zzls.xyz/">4get.zzls.xyz</a><a href="http://4get.zzlsghu6mvvwyy75mvga6gaf4znbp3erk5xwfzedb4gg6qqh2j6rlvid.onion">(tor)</a></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<a href="#schizo"><h2 id="schizo">How can I trust you?</h2></a>
|
<a href="#schizo"><h2 id="schizo">How can I trust you?</h2></a>
|
||||||
|
|
BIN
banner/4get-default.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
banner/aves.png
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 6 KiB |
Before Width: | Height: | Size: 9.4 KiB |
BIN
banner/cynic.png
Before Width: | Height: | Size: 67 KiB |
BIN
banner/deek.png
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 2.4 KiB |
BIN
banner/eagle.png
Before Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 13 KiB |
BIN
banner/gnuwu.png
Before Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 33 KiB |
BIN
banner/horse.png
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 63 KiB |
BIN
banner/sec.png
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 10 KiB |
47
data/instances.php
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
<?php
|
||||||
|
/*
|
||||||
|
this file exists to separate instance data from the actual about page
|
||||||
|
HTML, and to make it easier to add/modify instances cleanly.
|
||||||
|
*/
|
||||||
|
$instancelist = [
|
||||||
|
[
|
||||||
|
"name" => "lolcat's instance (master)",
|
||||||
|
"address" => [
|
||||||
|
"uri" => "https://4get.ca/",
|
||||||
|
"displayname" => "4get.ca"
|
||||||
|
],
|
||||||
|
"altaddresses" => [ // all these address blocks will be linked in parentheses
|
||||||
|
[ // e.g. 4get.ca (tor) (i2p) etc.
|
||||||
|
"uri" => "http://4getwebfrq5zr4sxugk6htxvawqehxtdgjrbcn2oslllcol2vepa23yd.onion",
|
||||||
|
"displayname" => "tor"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "zzls's instance",
|
||||||
|
"address" => [
|
||||||
|
"uri" => "https://4get.zzls.xyz/",
|
||||||
|
"displayname" => "4get.zzls.xyz"
|
||||||
|
],
|
||||||
|
"altaddresses" => [
|
||||||
|
[
|
||||||
|
"uri" => "http://4get.zzlsghu6mvvwyy75mvga6gaf4znbp3erk5xwfzedb4gg6qqh2j6rlvid.onion",
|
||||||
|
"displayname" => "tor"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"name" => "4get on a silly computer",
|
||||||
|
"address" => [
|
||||||
|
"uri" => "https://4get.silly.computer",
|
||||||
|
"displayname" => "4get.silly.computer"
|
||||||
|
],
|
||||||
|
"altaddresses" => [
|
||||||
|
[
|
||||||
|
"uri" => "https://4get.cynic.moe/",
|
||||||
|
"displayname" => "fallback domain"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
]
|
||||||
|
?>
|