• Stars
    star
    636
  • Rank 68,107 (Top 2 %)
  • Language
    CSS
  • License
    GNU Affero Genera...
  • Created over 1 year ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

General purpose (reverse) proxy and forwarding tool for networking noobs. Now written in Go!

Zoraxy

General purpose request (reverse) proxy and forwarding tool for low power devices. Now written in Go!

Features

  • Simple to use interface with detail in-system instructions

  • Reverse Proxy

    • Subdomain Reverse Proxy

    • Virtual Directory Reverse Proxy

  • Redirection Rules

  • TLS / SSL setup and deploy

  • Blacklist by country or IP address (single IP, CIDR or wildcard for beginners)

  • Global Area Network Controller Web UI (ZeroTier not included)

  • Integrated Up-time Monitor

  • Web-SSH Terminal

  • Utilities

    • CIDR IP converters
    • mDNS Scanner
    • IP Scanner
  • Others

    • Basic single-admin management mode
    • External permission management system for easy system integration
    • SMTP config for password reset

Build from Source

Require Go 1.20 or above

git clone https://github.com/tobychui/zoraxy
cd ./zoraxy/src/
go mod tidy
go build

sudo ./zoraxy -port=:8000

Usage

Zoraxy provide basic authentication system for standalone mode. To use it in standalone mode, follow the instruction below for your desired deployment platform.

Standalone Mode

Standalone mode is the default mode for Zoraxy. This allow single account to manage your reverse proxy server just like a home router. This mode is suitable for new owners for homelab or makers start growing their web services into multiple servers.

Linux

sudo ./zoraxy -port=:8000

Windows

Download the binary executable and double click the binary file to start it.

Raspberry Pi

The installation method is same as Linux. If you are using Raspberry Pi 4 or newer models, pick the arm64 release. For older version of Pis, use the arm (armv6) version instead.

Other ARM SBCs or Android phone with Termux

The installation method is same as Linux. For other ARM SBCs, please refer to your SBC's CPU architecture and pick the one that is suitable for your device.

Docker

See the /docker folder for more details

External Permission Management Mode

If you already have a up-stream reverse proxy server in place with permission management, you can use Zoraxy in noauth mode. To enable noauth mode, start Zoraxy with the following flag

./zoraxy -noauth=true

Note: For security reaons, you should only enable no-auth if you are running Zoraxy in a trusted environment or with another authentication management proxy in front.

Use with ArozOS

ArozOS subservice is a build in permission managed reverse proxy server. To use zoraxy with arozos, connect to your arozos host via ssh and use the following command to install zoraxy

# cd into your arozos subservice folder. Sometime it is under ~/arozos/src/subservice
cd ~/arozos/subservices
mkdir zoraxy
cd ./zoraxy

# Download the release binary from Github release
wget {binary executable link from release page}

# Set permission. Change this if required
sudo chmod 775 -R ./

# Start zoraxy to see if the downloaded arch is correct.
./zoraxy

# After the unzip done, press Ctrl + C to kill it
# Rename it to valid arozos subservice binary format
mv ./zoraxy zoraxy_linux_amd64

# If you are using SBCs with different CPU arch, use the following names
# mv ./zoraxy zoraxy_linux_arm
# mv ./zoraxy zoraxy_linux_arm64

# Restart arozos
sudo systemctl restart arozos

To start the module, go to System Settings > Modules > Subservice and enable it in the menu. You should be able to see a new module named "Zoraxy" pop up in the start menu.

Screenshots

More screenshots on the wikipage Screenshots!

FAQ

There is a wikipage with Frequently-Asked-Questions!

Global Area Network Controller

This project also compatible with ZeroTier. However, due to licensing issues, ZeroTier is not included in the binary.

Assuming you already have a valid license, to use Zoraxy with ZeroTier, install ZeroTier on your host and then run Zoraxy in sudo mode (or Run As Administrator if you are on Windows). The program will automatically grab the authtoken at correct location in your host.

If you prefer not to run Zoraxy in sudo mode or you have some weird installation profile, you can also pass in the ZeroTier auth token using the following flags

./zoraxy -ztauth="your_zerotier_authtoken" -ztport=9993

The ZeroTier auth token can usually be found at /var/lib/zerotier-one/authtoken.secret or C:\ProgramData\ZeroTier\One\authtoken.secret.

This allows you to have infinite number of network members in your Global Area Network controller. For more technical details, see here.

Web.SSH

Web SSH currently only support Linux based OS. The following platforms are supported

  • linux/amd64
  • linux/arm64
  • linux/armv6 (experimental)
  • linux/386 (experimental)

Loopback Connection

Loopback web ssh connection, by default, is disabled. This means that if you are trying to connect to address like 127.0.0.1 or localhost, the system will reject your connection due to security issues. To enable loopback for testing or development purpose, use the following flags to override the loopback checking.

./zoraxy -sshlb=true

Sponsor This Project

If you like the project and want to support us, please consider a donation. You can use the links below

License

This project is open source under AGPL. I open source this project so everyone can check for security issues and benefit all users. If your plans to use this project in commercial environment which violate the AGPL terms, please contact [email protected] for an alternative commercial license.

More Repositories

1

arozos

Web Desktop Operating System for low power platforms, Now written in Go!
JavaScript
1,772
star
2

4xMacropad

Some ultra low cost, unique layouts mechanical macropad using CH552G
C
169
star
3

MCH-PD-Automatic-Reflow-Hotplate

A palm sized MCH (Metal Ceramic Heater) based reflow hotplate powered by USB-PD
C++
48
star
4

SlicerA

A web based STL to Gcode slicer for ArozOS
JavaScript
22
star
5

The-3D-Scanner-Project

This repo contains all the developmental data of creating a low cost 3D scanner with Arduino. Remember to read README before start building your own one as not all of the version will works.
G-code
18
star
6

ArOZ-Omega-Online

ArOZ Omega Online Multimedia Streaming Web System design for low processing power servers.
CSS
17
star
7

DIY-60W-PD-Powerbank

A DIY 60W PD Powerbank with realtime battery display for charging your laptop and smartphone
G-code
12
star
8

Weather-Pet-Display

A simple weather display with a cute interactive desktop pet (โ›โ—กโ›โœฟ)
C++
11
star
9

go-DDDNS

Go implementation of the Rouring ID based Distributed Dynamic Domain Name Service
Go
10
star
10

imusutm

Basic service up-time monitor written in Golang
HTML
9
star
11

Automatic-Update-Launcher

A general purpose updater for updating program binaries when update folder exists
Go
7
star
12

PHP2CuraEngine

A CuraEngine bridge written in PHP, providing 3D model slicing via PHP request.
G-code
5
star
13

Home-Dynamic

Home Dynamic Protocol for ESP8266 offgrid home automation system
JavaScript
5
star
14

Youtube-Video-and-Audio-merge

Simple bat script for merging 1080p Video and 360p Audio source with FFmpeg
Batchfile
5
star
15

goHidden

Go module to set a hidden folder and check if a folder is hidden
Go
5
star
16

OpenTicketSupport

Opensource Ticket Support System written in Go
CSS
4
star
17

TocasUI-2-to-2.3-Converter

This simple python script convert all php or html that contains TOCAS UI 2 tocas.min.css to latest version of tocas.css 2.3
Python
3
star
18

GitDocA

A Simple Github docs/ rendering script using Markdown
3
star
19

ArOZ-Portable-LAN-Scanner

A simple app design for Andriod that can scan all the ArOZ Portable devices within the same local area network
Objective-C
3
star
20

ArOZ-User-Interface

ArOZ User Interface is a VB.net based interface that make a cartoon character stand on your desktop. Supported with ArOZ Script (which is a self developed lanuage that make it perform a certain action, possible to translate from SSP to AP with software provided) and plugins, ArOZ can help you with your daily work and chat with you when you are tired.
Visual Basic
3
star
21

PixelShot

PixelShot - Opensource screenshot tool for Windows written in VB.net
HTML
2
star
22

Webview-Adapter

Building basic Windows desktop GUI with Golang and HTML
Visual Basic .NET
2
star
23

Python-Mood-Analysis-Engine

This python code can identify users mood by checking the keywords in a certain sentence. The sentence can be provided with Voice to Text Engine.
Python
2
star
24

Golang-OOP-Example

A very basic example showcasing the use of go module and struct for OOP in Golang project
Go
2
star
25

Anime-Dump

A simple tool with a simple interface for you to manage the folder that you just put all your downloaded anime without sorting.
C#
2
star
26

ArOZ-Mirror

The alternative to MagicMirror but with clearner interface and nearly no settings required.
PHP
2
star
27

PhoneGap-xml-generator

An exe that simplify your steps towards creating an App xml and preparation of icons/splash screen images.
Visual Basic
2
star
28

gcci

gcc Compiler Simple User Interface
Visual Basic
1
star
29

IMUS-Quick-Send

This system is designed for quick transfer of text or url from smart phone to PC and vice versa with QR-code and session id system.
JavaScript
1
star
30

smartsort

A smart sorting algorithm for Go to sort filename containing digits that is not zero padded
Go
1
star
31

Gitupgo

A git based update utility written in Go
Go
1
star
32

ArUSB2Win

ArOZ USB Drive Filename to Windows Filename Converter
Visual Basic
1
star
33

Wordpress-Phonegap-App

A demo for porting wordpress blog into phonegap app using as minimum lines of code as possible.
JavaScript
1
star
34

Hello-World

1
star
35

DotFix

Fixing the problem of no respond while pressing the dot key on keyboard but Shift+dot is working for unknown reason.
Visual Basic
1
star
36

IMUS-WSR

IMUS WebSocket Reflector(TM), this simple websocket script reflect all your websocket input to all connected client so you can catch the message with JavaScript.
JavaScript
1
star
37

ArOZ-Omega-Python-Interface

ArOZ Omega Python Interface for Linux Environment, created with pygame
Python
1
star
38

FFmpeg-ArOZ-Online-Wrapper-

A simple wrapper for ArOZ Online Beta system. A simple PHP based FFmpeg wrapper with Asynchronous Threadings supported.
HTML
1
star
39

Gcode-Coloring-Analysis-Engine

A simple python algorithm that turn any black and white Gcode data into another black and white gcode data with en extra file containing color data.
Python
1
star