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.0 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" | ||||||
|  |             ] | ||||||
|  |         ] | ||||||
|  |     ], | ||||||
|  | ] | ||||||
|  | ?>
 | ||||||
 lolcat
						lolcat