Zoraxy
--
Beyond Reverse Proxy: Your Ultimate Homelab Network Tool
+
- Learn More -
-
Quick Access | -|
---|---|
-
-
- Prebuild Binary
-
- |
- - Open - | -
-
-
- Source Code
-
- |
- - Open - | -
Zoraxy
+ +The ultimate homelab networking toolbox for self-hosted services + // 簡化自家伺服器部署之事,初學者居家網絡必備良器 +
+ Download // 立即下載 + Source Code // 查看原始碼 + +
+ Scroll down to learn more // 向下滑以了解更多 // スクロールダウンして詳細をご覧ください // 下滑了解更多 +
-
-
- Features
- Highlighting a few important features of Zoraxy
-
-
- -
-
-
- Reverse Proxy
-
-
- Simple to use noob-friendly reverse proxy server that can be easily set up using a web form and a few toggle switches.
-
-
-
- Redirection
-
-
- Direct and intuitive redirection rules with basic rewrite options. Suitable for most simple use cases.
-
-
-
- Geo-IP & Blacklist
-
-
- Blacklist with GeoIP support. Allows easy setup for regional services.
-
-
-
- Global Area Network
-
-
- ZeroTier controller integrated GAN. Enable unlimited nodes in your network with a few clicks.
-
-
-
- Web SSH
-
-
- Integration with Gotty Web SSH terminal allows one-stop management of your nodes inside private LAN via gateway nodes.
-
-
-
- Real Time Statistics
-
-
- Traffic data collection and real-time analytic tools provide you the best insight of visitors data without cookies.
-
-
-
- Scanner & Utilities
-
-
- Build in IP scanner and mDNS discovery service to enable automatic service discovery within LAN.
-
-
-
- Open Source
-
-
- Project is open-source under AGPL on Github. Feel free to contribute on missing functions you need!
-+ +

Reverse Proxy // 反向代理
+Easy setups with dynamic updates // 讓你想不到般簡單易用、迅速設定、動態更新
+Access your reverse proxy and self-hosted services from any computer with a browser, anytime, anywhere. + // 透過瀏覽器,隨時隨地在任何裝置上存取您的反向代理及自家伺服器服務。 + +
+-
-
-
- Plugins
- Add custom routing rules via simple scripts
-
-
- -
Documentation work in progress
--
-
-
- Source Code
- Feel free to give us a ⭐ star ⭐.
-
-
- -
- - +
- - -
-
Real-time Analytics // 即時流量分析
+Dynamic statistic and access control // 動態流量數據、權限與路由設定
+Provide real time statistical overview, take advantage of the real time traffic and situations to make better decisions.
+ // 提供即時統計概覽,利用即時流量和情況做出更好的決策。
-
-
CopyRight Zoraxy Project and its authors © 2021 -
+ ++ + +
Screenshots // 系統截圖
+








-
+ + +
+
Review Videos // 介紹影片
++
+
Download // 下載
+Install with command line // 使用 CLI 下載並執行發行版本
+
+ wget https://github.com/tobychui/zoraxy/releases/latest/download/zoraxy_linux_amd64
+ chmod +x ./zoraxy_linux_amd64
+ sudo ./zoraxy_linux_amd64
+
+ +
Install with precompiled binary // 下載發行版本
+ + OR + +Install with precompiled binary // 下載發行版本
+ ++
Install with command line (armv6-7, arm64, x86) // 使用 CLI 下載並執行 (armv6-7, arm64, x86)
+
+ # Check your CPU architecture
+ uname -m
+
+ # For arm64 (aarch64) CPU
+ wget -O zoraxy https://github.com/tobychui/zoraxy/releases/latest/download/zoraxy_linux_arm64
+
+ # For armv6 (armv6l) / armv7 (armv7l) CPU
+ wget -O zoraxy https://github.com/tobychui/zoraxy/releases/latest/download/zoraxy_linux_arm
+
+ # For RISC-V (riscv64) CPU
+ wget -O zoraxy https://github.com/tobychui/zoraxy/releases/latest/download/zoraxy_linux_riscv64
+
+
+ chmod +x ./zoraxy
+ sudo ./zoraxy
+
+ +
Install with precompiled binary // 下載發行版本
+ + + +Require Go (Golang) compiler. Details build from source instruction can be found on Zoraxy Github README file. + // 需要 Go (Go 語言)編譯器。建置詳情可以在 Zoraxy Github README 檔案中找到。 +
+
+ git clone https://github.com/tobychui/zoraxy
+ cd ./zoraxy/src/
+ go mod tidy
+ go build
+ sudo ./zoraxy
+
+ After the Zoraxy is started, navigate to http://localhost:8000 to continue account and system setup. + // 當 Zoraxy 執行檔 / 服務啟動後,使用瀏覽器開啟 http://localhost:8000 以繼續帳戶和系統設定。 +
++
Learn More // 了解更多
+If you like this project, please feel free to give us a ⭐ star ⭐. + // 如果您喜歡這個開源專案,歡迎來給我們一顆 ⭐星星⭐ 喔!! +
++
+
+
Zoraxy
++
Beyond Reverse Proxy: Your Ultimate Homelab Network Tool
++ Learn More +
+
Quick Access | +|
---|---|
+
+
+ Prebuild Binary
+
+ |
+ + Open + | +
+
+
+ Source Code
+
+ |
+ + Open + | +
+
+
+ Features
+ Highlighting a few important features of Zoraxy
+
+
+ +
+
+
+ Reverse Proxy
+
+
+ Simple to use noob-friendly reverse proxy server that can be easily set up using a web form and a few toggle switches.
+
+
+
+ Redirection
+
+
+ Direct and intuitive redirection rules with basic rewrite options. Suitable for most simple use cases.
+
+
+
+ Geo-IP & Blacklist
+
+
+ Blacklist with GeoIP support. Allows easy setup for regional services.
+
+
+
+ Global Area Network
+
+
+ ZeroTier controller integrated GAN. Enable unlimited nodes in your network with a few clicks.
+
+
+
+ Web SSH
+
+
+ Integration with Gotty Web SSH terminal allows one-stop management of your nodes inside private LAN via gateway nodes.
+
+
+
+ Real Time Statistics
+
+
+ Traffic data collection and real-time analytic tools provide you the best insight of visitors data without cookies.
+
+
+
+ Scanner & Utilities
+
+
+ Build in IP scanner and mDNS discovery service to enable automatic service discovery within LAN.
+
+
+
+ Open Source
+
+
+ Project is open-source under AGPL on Github. Feel free to contribute on missing functions you need!
++
+
+
+ Plugins
+ Add custom routing rules via simple scripts
+
+
+ +
Documentation work in progress
++
+
+
+ Source Code
+ Feel free to give us a ⭐ star ⭐.
+
+
+ +
+ + +
++ + +
++
CopyRight Zoraxy Project and its authors © 2021 -
++
+ + + diff --git a/docs/main.css b/docs/main.css new file mode 100644 index 0000000..a1b9abb --- /dev/null +++ b/docs/main.css @@ -0,0 +1,410 @@ +/* Global */ + +p,a,div,span,h1,h2,h3,h4,h5,h6{ + font-family: 'Source Sans Pro', sans-serif; +} + +body.en *:not(i){ + font-family: 'Source Sans Pro', 'Noto Sans TC',sans-serif !important; +} + +body.zh *:not(i){ + font-family: 'Noto Sans TC',sans-serif !important; +} + +body.jp *:not(i){ + font-family: "Noto Sans JP", sans-serif !important; +} + +body.zh-cn *:not(i){ + font-family: 'Noto Sans SC',sans-serif !important; +} + + +.centered.title{ + padding: 2em; + margin-bottom: 2em; + text-align: center; +} +.centered.title h1{ + font-weight: 300 !important; +} + +#backToTopBtn{ + position: fixed; + bottom: 1em; + right: 1em; + display:none; + z-index: 999; + border: 1px solid white; + background: #8debff; +} + +#backToTopBtn:hover{ + opacity: 0.8; +} + +#backToTopBtn i{ + color: white; +} + +/* Main Menu */ +#mainmenu{ + padding-top: 0.4em; + padding-bottom: 0.4em; + border-radius: 0; + margin-bottom: 0; + margin-top: 0; +} + +#slideshowBanner .ui.basic.white.button{ + color: white; + box-shadow: 0 0 0 1px rgb(231, 231, 231) inset; + border-radius: 0.4em; + background: none !important; +} +#slideshowBanner .ui.basic.white.button:hover{ + background-color: rgba(255, 255, 255, 0.3) !important; +} + +#slideshowBanner .ui.basic.white.button:active{ + background: rgba(255, 255, 255, 0.5) !important; +} + +#rwdmenubtn{ + display:none; + position: absolute; +} + +#mainmenu .ui.secondary.inverted.menu .link.item:not(.disabled), .ui.secondary.inverted.menu a.item:not(.disabled){ + font-size: 1.1em; + font-weight: 500; + border-bottom: 1px solid transparent; + transition: border-bottom ease-in-out 0.1s; + color: white !important; + border-radius: 0; +} + +#mainmenu #mainmenu .ui.secondary.inverted.menu .link.item:not(.disabled), .ui.secondary.inverted.menu a.item:not(.disabled):hover{ + background-color: transparent; + border-bottom: 1px solid #82adfc; + color: #82adfc !important; +} + +/* Image Sldiers */ +#slideshowBanner{ + background: rgb(108,172,255); + background: linear-gradient(48deg, rgba(108,172,255,1) 8%, rgba(141,235,255,1) 65%); + position: relative; + height: 80vh; +} + +.slideshow { + width: 100%; + overflow: hidden; + border-radius: 0; + max-height: 500px; +} + +.slideshow .slides { + display: flex; + transition: transform 1s ease-in-out; + opacity: 0.6; + filter: blur(2px); + pointer-events: none; + user-select: none; +} + +.slideshow .slide { + min-width: 100%; + box-sizing: border-box; +} + +.slideshow .slide img { + width: 100%; + display: block; +} + +.slideshow .dots{ + text-align: center; + position: absolute; + bottom: 15px; + width: 100%; +} + +.slideshow .dot { + display: inline-block; + width: 10px; + height: 10px; + margin: 0 5px; + background-color: #bebebe; + border-radius: 50%; + cursor: pointer; + transition: background-color 0.6s ease; +} + +.dot.active { + background-color: #ffffff; +} + +#slideshowBanner .title{ + display: inline-block; + width: 100%; + max-width: 500px; + text-align: left; + position: absolute; + top: 50%; + left: 10%; + transform: translateX(0%) translateY(-50%); + color: white; +} + +#slideshowBanner .title .scrolldownTips{ + display: none; +} + +#slideshowBanner .title h1{ + font-size: 4em; + font-weight: 600; + margin-bottom: 0; +} + +#slideshowBanner .title p{ + font-size: 1.2em; +} + +/* About ArozOS */ +.about-text-wrapper{ + margin-top: 3em; +} +.about-text-wrapper p, .about-text-wrapper .list .item{ + font-weight: 300; +} +.about-title{ + font-size: 2.4em; + font-weight: 300; + margin-bottom: 0em; +} +.about-title b{ + font-weight: 800; +} +.about-text-wrapper .ui.list .item{ + margin-bottom: 0.6em; +} +.about-text-wrapper .ui.list .item .icon{ + padding-top: 0.15em; +} + +/* Features */ +#features{ + margin-bottom: 3em; +} + +/* Tech Spec */ +#techspec .centered.title{ + color: white; +} + +#techspec p { + color: white; +} + +#techspec .videoScrollBar{ + overflow-x: scroll; + display: block; + white-space: nowrap; + scrollbar-color: #dee6f7 #5888f0; + padding-top: 2em; + padding-bottom: 3em; +} + +.introvideo{ + display: inline-block !important; + +} + +.blackbanner{ + width: 100%; + background: rgb(85,131,238); + background: linear-gradient(48deg, rgba(85,131,238,1) 21%, rgba(108,172,255,1) 73%); + min-height: 300px; + +} + +/* Download */ +.downloadButton { + margin-top: 0.4em !important; +} + +.downloadTabWrapper{ + width: 100%; + overflow-x: hidden; +} + +#download .ui.black.message{ + word-break: break-all; +} + +/* Learn More */ +#learnmore .linkicons{ + text-align: center; + width: 100%; +} + +#learnmore .linkicons .divider{ + margin-left: 1em; + margin-right: 1em; +} + +#learnmore .linkicons .externallink{ + margin-bottom: 0.6em; + transition: opacity 0.1s ease-in-out; +} + +#learnmore .linkicons .externallink i{ + /* color: #1b1c1d; */ + font-weight: 300; + font-size: 1.5em; +} + +#learnmore .linkicons .externallink:hover{ + opacity: 0.8; +} + + +#learnmore .linkicons .externallink .content{ + color: #1b1c1d; + font-weight: 500; + font-size: 0.6em; +} + + +/* Footer */ +#footer{ + background: rgb(85,131,238); + background: linear-gradient(48deg, rgba(85,131,238,1) 21%, rgba(108,172,255,1) 73%); + color: rgb(255, 255, 255); +} + +#footer a { + color: rgb(209, 224, 255); +} + +#footer .bottom-attach .divider{ + color: rgb(212, 212, 212); +} + +#footer .ui.list .title{ + margin-bottom: 0.6em; +} + +/* RWD Rules */ +@media (max-width:960px) { + /* Main menu */ + #mainmenu{ + display:none; + z-index: 99; + position: absolute; + top: 0; + left: 0; + width: 100%; + } + + #rwdmenubtn{ + display: block; + position: absolute; + top: 0.4em; + right: 0.4em; + z-index: 100; + } + + /* Slideshows */ + .slideshow { + min-height: 100vh; + } + + .slideshow .slide{ + height: 100% !important; + min-width: none; + } + + .slideshow .slide img{ + height: 100%; + width: auto; + } + + #slideshowBanner .title .scrolldownTips{ + margin-top: 2em; + display: block; + } + + #slideshowBanner .title .scrolldownTips img{ + left: 50%; + transform: translateX(-50%); + } + + #download .stackable.tabular.menu .active.item{ + background-color: rgb(243, 243, 243); + border-width: 0; + border-radius: 0.4em !important; + } + +} + + + +/* + Waves CSS +*/ + +#wavesWrapper{ + position: absolute; + bottom: 0; + width: 100%; + left: 0; +} + +.waves { + position:relative; + width: 100%; + height:15vh; + margin-bottom:-7px; /*Fix for safari gap*/ + min-height:100px; + max-height:150px; +} + + +.parallax > use { + animation: move-forever 25s cubic-bezier(.55,.5,.45,.5) infinite; +} +.parallax > use:nth-child(1) { + animation-delay: -8s; + animation-duration: 28s; +} +.parallax > use:nth-child(2) { + animation-delay: -12s; + animation-duration: 40s; +} +.parallax > use:nth-child(3) { + animation-delay: -16s; + animation-duration: 52s; +} +.parallax > use:nth-child(4) { + animation-delay: -20s; + animation-duration: 80s; +} +@keyframes move-forever { + 0% { + transform: translate3d(-90px,0,0); + } + 100% { + transform: translate3d(85px,0,0); + } +} +/*Shrinking for mobile*/ +@media (max-width: 768px) { + .waves { + height:40px; + min-height:40px; + } +} \ No newline at end of file diff --git a/docs/main.js b/docs/main.js new file mode 100644 index 0000000..2711c1d --- /dev/null +++ b/docs/main.js @@ -0,0 +1,73 @@ +/* + Localization + + To add more locales, add to the html file with // (translated text) + after each DOM elements with attr i18n + + And then add the language ISO key to the list below. +*/ +let languages = ['en', 'zh', 'jp', 'zh-cn']; + + +//Bind language change dropdown events +$(".dropdown").dropdown(); +$("#language").on("change",function(){ + let newLang = $("#language").parent().dropdown("get value"); + i18n.changeLanguage(newLang); + $("body").attr("class", newLang); +}); + +//Initialize the i18n dom library +var i18n = domI18n({ + selector: '[i18n]', + separator: ' // ', + languages: languages, + defaultLanguage: 'en' +}); +i18n.changeLanguage('en'); + +/* Main Menu */ +$("#rwdmenubtn").on("click", function(){ + $("#mainmenu").slideToggle("fast"); +}) + +//Handle resize +$(window).on("resize", function(){ + if (window.innerWidth > 960){ + $("#mainmenu").show(); + }else{ + $("#mainmenu").hide(); + } +}) + +/* + Download +*/ + +$('.menu .item').tab(); + +//Download webpack and binary at the same time +function handleDownload(releasename){ + let binaryURL = "https://github.com/tobychui/zoraxy/releases/latest/download/" + releasename; + window.open(binaryURL); +} + +/* RWD */ +window.addEventListener('scroll', function() { + var scrollPosition = window.scrollY || window.pageYOffset; + var windowHeight = window.innerHeight; + var hiddenDiv = document.querySelector('#backToTopBtn'); + + if (scrollPosition > windowHeight / 2) { + hiddenDiv.style.display = 'block'; + } else { + hiddenDiv.style.display = 'none'; + } +}); + + +function backToTop(){ + $('html, body').animate({scrollTop : 0},800, function(){ + window.location.hash = ""; + }); +} \ No newline at end of file