Skip to content

coolabnet/guarita

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Guarita

Balena Push Release

Guarita is designed to enhance the Internet experience. It offers ad blocking, privacy protection, and parental control. It also allows syncing content from a curated repository and streaming it through an intuitive interface. It is optimized for deployment on a Raspberry Pi device and can be managed remotely via balenaCloud.

Guarita also includes an NTP server for use with your router, ensuring your network's clock is always up to date. This is particularly useful for implementing router-level internet blocks.

Features

This project is a balenaCloud stack with the following services:

  • AdGuard: A network-wide ad blocking service. More Info
  • Wireguard: A simple WireGuard VPN server GUI. More Info
  • Jellyfin: A free software media system that lets you control your media from a web interface. More Info
  • Syncthing: A service to sync folders across devices. More info
  • NTP: A Network Time Protocol server.
  • Hostname: A service to set a custom hostname on application start.

Getting Started

You can one-click-deploy this project to balena using the button below:

deploy button

Hardware required

  • Raspberry Pi 3 or 4
  • 16GB Micro-SD Card (we recommend Sandisk Extreme Pro SD cards)
  • Micro-USB cable
  • Power supply
  • Case and cooling (optional but recommended)
  • Ethernet cable

Environment Variables

Device Variables apply to all services within the application, and can be applied fleet-wide to apply to multiple devices. If you used the one-click-deploy method, the default environment variables will already be added for you to customize as needed.

Service Variable Example Description
AdGuard - - -
Wireguard WG_HOST 192.168.0.1 The host IP for the WireGuard VPN server
Wireguard PASSWORD admin The password for the WireGuard VPN server
Hostname SET_HOSTNAME waiapi Set a custom hostname on application start
Jellyfin PUID 1000 User ID
Jellyfin PGID 1000 Group ID
Sync PUID 1000 User ID
Sync PGID 1000 Group ID
Sync TZ America/Brasil Timezone
NTP NTP_SERVERS time.cloudflare.com NTP server to use
NTP LOG_LEVEL 0 Log level for the NTP server

IP Addresses

Service IP Address
AdGuard 84
Calibre 81
File Browser 85
Jellyfin 86
NTP 123
Sync 82
Wireguard 83

Please note that these IP addresses are the default ones and can be changed according to your network configuration.

Remote Support

In order to ssh into the devices you'll need to be part of the org that created the fleet and have your public ssh key added to the Balena Dashboard. Balena devices use port 22222 for ssh. The easiest way to work with Balena remotely is by installing the Balena CLI.And be sure to check documentation for more information on ssh access.

To ssh into a machine simply run:

balena ssh <uuid>

Replacing with the device's uuid which can be obtained from the cli or the cloud dashboard. If we want to enter the dashboard of a router on the device's network, first you'll need to tunnel the ssh port:

balena tunnel <uuid> -p 22222:9999

On another terminal ssh into local host which is tunneling the device, using the -D option:

ssh -D 9090 gh_luandro@localhost -p 9999

Then finally configure a sock5 proxy on the browser using the gui, or with Chromium or Firefox installed, run in another terminal:

chromium --temp-profile --proxy-server="socks5://localhost:9090"

or

firefox --proxy-server="socks5://localhost:9090"

The browser window that opens up will be tunneling the device, so if a router's ip is 192.168.1.1 opening that in the browser will open the router's dashboard if it's running on router's port 80.

Help

If you're having trouble getting the project running, submit an issue or post on the forums at https://forums.balena.io.

Contributing

Please open an issue or submit a pull request with any features, fixes, or changes.