Sero is a web server that allows you to easily host your static sites without pain. The idea was inspired by surge.sh but gives you full control.

Overview

Logo

sero

Lightning-fast, static web publishing with zero configuration and full control

Postgres Rust Docker Nginx

License

πŸ“– Table Of Contents

πŸ”§ Tools

Sero - this tool is used to upload your site to sero servers

❓ About The Project

This project is essentially a revamp of the well-known surge.sh platform. While surge.sh is a fantastic tool for publishing web applications, I noticed it lacked certain features that could significantly enhance its utility. Therefore, I decided to create my own version, incorporating those missing elements to provide a more comprehensive and seamless user experience.

One key feature that it is self-hosted. This gives users more flexibility and control over their projects, allowing them to truly make their work their own. My goal with this project is to create a platform that not only meets but exceeds the needs of web developers, making the process of publishing web applications as hassle-free and efficient as possible. It also has some features that are not in surge.sh

So saying shortly this is a simple web server for static websites but with an ability to deploy it with custom subdomain without any configuration using cli tool. On upload it will automatically create subdomain for your site.

This is a cli tool for upload tool

πŸš€ Features

  • Deploy in seconds without configuration
  • Enable and disable site new
  • Download site new
  • Limits control new
  • Easy upload with cli tool
  • Custom 404.html (on 404 status user will see your 404.html)
  • Custom 503.html new (on disabled site)
  • Clean urls
  • CORS

πŸ”Œ Built With

⌨️ Getting Started

Prerequisites

That is what you will need to deploy this project

  • You need to buy a domain
  • You need a server
  • You need access to DNS records
  • You need to have docker-compose installed

Installation

Clone this repository

git clone https://github.com/clowzed/sero

✏️ Configure DNS records

  • Add wildcard subdomain to your server.

It is usually done by adding TXT DNS record with value "*" pointing to your server

✏️ Configure docker-compose.yml

Simply open a docker-compose.yml file from this repo with any redactor you link

  1. Configure your domain and zone (for example I bought example.com) (lines 30 and 31)
environment variable description
DOMAIN example
ZONE com
  1. Configure desired limits if you want (you can skip this)
environment variable description already set
MAX_USERS Maximum amount of users to be registered 1
MAX_SITES_PER_USER Maximum amount of sites which each user can upload 100
MAX_BODY_LIMIT_BYTES Maximum body limit in bytes 10000000 (10mb)

πŸš€ Deploy

docker-compose up -d

✨ Usage

Let see an example of uploading your site to your sero server.

Consider our domain is awesome.com

Installing cli tool

npm i -g @clowzed/sero

πŸ†• Creating and initializing folder

mkdir our-website
cd our-website
sero init # This will generate default sero.toml file

πŸ†• Creating index.html

echo "Hello from our website!" > index.html

πŸ” Inspecting sero.toml

Tha is how default sero.toml file looks like

[credentials]
username = "clowzed" # Here will be your hostname
password = ""

[server]
url = "http://sero.com/" 
subdomain = "clowzed"

[cors]
origins = []

✏️ Changing sero.toml

So now we need to change url to point to our server.

We also want to change subdomain for our website

[credentials]
username = "clowzed"
password = ""

[server]
url = "http://awesome.com/" 
subdomain = "oursite"

[cors]
origins = ["*"] # list of origins you trust

⬆️ Registration and uploading

sero register # We need to call it this only if we've changed username
sero upload

Now your site is available at http://oursite.awesome.com/index.html

Advanced usage with new features

  1. Disabling site new

You can disable your site using this command.

sero disable

This will preserve your subdomain so other users will not be able to borrow it. This will return 503 status code for any request to site with your subdomain. You can create 503.html file so it will be returned to user. You can do it for maintenance. The 503.html file should be at root of your folder

  1. You can enable site with this command. Now it will work as usual. new
sero enable
  1. Download your site new

You can easily download your site as zip with this command

sero download
  1. Delete your site and free subdomain
sero teardown

πŸ“ Roadmap

See the open issues for a list of proposed features (and known issues).

πŸ§‘β€πŸ€β€πŸ§‘ Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  • If you have suggestions for adding or removing projects, feel free to open an issue to discuss it, or directly create a pull request after you edit the README.md file with necessary changes.
  • Please make sure you check your spelling and grammar.
  • Create individual PR for each suggestion.
  • Please also read through the Code Of Conduct before posting your first idea as well.

Creating A Pull Request

  1. Fork the Project
  2. Create your feature Branch (git checkout -b feature/some)
  3. Commit your changes (git commit -m 'implementation of some feature')
  4. Push to the branch (git push origin feature/some)
  5. Open a Pull Request

License

Distributed under the MIT License

Authors

  • clowzed
You might also like...
A command-line downloader for sites archived on the Wayback Machine

This is a small command-line utility I wrote to help with browsing archived websites from the Wayback Machine, which can sometimes be pretty slow.

Mini Rust CLI to deploy sites to Netlify using their API

This is a Rust CLI that uses the Netlify API to deploy sites.

A tool to filter sites in a FASTA-format whole-genome pseudo-alignment

Core-SNP-filter This is a tool to filter sites (i.e. columns) in a FASTA-format whole-genome pseudo-alignment based on: Whether the site contains vari

FastSSH is a TUI that allows you to quickly connect to your services by navigating through your SSH config.
FastSSH is a TUI that allows you to quickly connect to your services by navigating through your SSH config.

Connect quickly to your services πŸš€ FastSSH is a TUI that allows you to quickly connect to your services by navigating through your SSH config. Instal

A filesystem driver that allows you to view your Blackboard course contents as if they were normal files and folders on your system!
A filesystem driver that allows you to view your Blackboard course contents as if they were normal files and folders on your system!

BlackboardFS Blackboard: noun A website so bad that it might as well be a network drive. BlackboardFS is a filesystem driver that allows you to view y

Terminal UI that allows Alacritty users to quickly and easily shuffle through provided themes πŸ¦„

Alac-pretty alac-pretty.mp4 If you're like me in that you constantly need to change the colors of your dev environment because visual stagnation reall

πŸ¦€Rust + Large Language Models - Make AI Services Freely and Easily. Inspired by LangChain

llmchain: Modern Data Transformations with LLM πŸ¦€ + Large Language Models, inspired by LangChain. Features Models: LLMs & Chat Models & Embedding Mode

 A money tracker: Your income and expenses at your control
A money tracker: Your income and expenses at your control

NixBucks A simple budgeting app Install If you are on Linux, you can download the Appimage from the latest release (click here). Otherwise, you can in

Rmt - similar to the rm command, but it allows me to save the deleted elements in the trash
Rmt - similar to the rm command, but it allows me to save the deleted elements in the trash

Rmt is similar to the rm command but saves the deleted elements in the trash and restores them. Rmt is written in Rust πŸ¦€

Comments
  • Add a LICENSE file

    Add a LICENSE file

    Even though the β€œreadme.md” file contains a statement that says β€œDistributed under the MIT License”, there is no text of the license or a link to that text, which could probably limit some people on the use of the project.

    I'm not a lawyer to provide legal advice, but ideally a file with the text of the license should be included instead of a link, the file would contain the name of the author and also is easier to access (cause a website could have downtimes).

    opened by schemetastic 2
Owner
Dmitry Miasnenko
Making people's life better with keypresses
Dmitry Miasnenko
A rust library that allows you to host the CLR and execute dotnet binaries.

ClrOxide ClrOxide is a rust library that allows you to host the CLR and dynamically execute dotnet binaries. I wanted to call it Kepler for no particu

YK 94 Apr 12, 2023
A file server that supports static serving, uploading, searching, accessing control, webdav...

Dufs Dufs is a distinctive utility file server that supports static serving, uploading, searching, accessing control, webdav... Features Serve static

null 3.6k Oct 30, 2023
Gives custom drugs to your terminal πŸ’Š

Linux on drugs ?? Gives custom drugs to your terminal ?? Output random colors really fast Installation ?? Arch Linux Linux on drugs is in the AUR yay

Skwal 3 Sep 10, 2022
tmplt is a command-line interface tool that allows you to quickly and easily set up project templates for various programming languages and frameworks

tmplt A User Friendly CLI Tool For Creating New Projects With Templates About tmplt is a command-line tool that lets users quickly create new projects

Humble Penguin 35 Apr 8, 2023
A bit like tee, a bit like script, but all with a fake tty. Lets you remote control and watch a process

teetty teetty is a wrapper binary to execute a command in a pty while providing remote control facilities. This allows logging the stdout of a process

Armin Ronacher 259 Jan 3, 2023
Fast Symbol Ranking based compressor. Based on the idea of Matt Mahoney's SR2

Fast Symbol Ranking based compressor. Based on the idea of Matt Mahoney's SR2

Mai Thanh Minh 3 Apr 29, 2023
Detects whether a terminal supports color, and gives details about that support

Detects whether a terminal supports color, and gives details about that support. It takes into account the NO_COLOR environment variable. This crate i

Kat MarchΓ‘n 30 Dec 29, 2022
πŸ’« This program allows you to do requests in Rust without reqwest !

Zapros ?? This program allows you to do requests in Rust without reqwest ! Usage : Get use crate::http_client::HttpClient; use crate::http_client::Htt

zqo 4 Aug 18, 2023
zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets you're watching easily into watchlists for easy access on your terminal.

zigfi zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets

Aldrin Zigmund Cortez Velasco 18 Oct 24, 2022
A simple program that provides DBus interface to control display temperature and brightness under wayland without flickering

wl-gammarelay-rs Like wl-gammarelay, but written in rust, runs on a single thread, has three times less SLOC and uses DBus (for simplicity). Dbus inte

Max Verevkin 33 Nov 23, 2022