Giter Site home page Giter Site logo

pieterhop / master-builder Goto Github PK

View Code? Open in Web Editor NEW

This project forked from inethi/master-builder

0.0 0.0 0.0 9.42 MB

This is the starting place to build iNethi on your own server

Home Page: https://www.inethi.org.za/

License: GNU General Public License v3.0

Shell 10.16% JavaScript 23.10% Python 3.98% CSS 25.17% HTML 37.50% Dockerfile 0.09%

master-builder's Introduction

iNethi Core Build

This is the starting place to build iNethi on your own server.

A collection of awesome self-hosted services

iNethi creates a platform that brings a lot of awesome self-hosted services and our bespoke solutions together. It provides a secure reverse proxy in front of these services using Traefik, creates a nice splash page to access the web services, synchronization of content between a global iNethi cloud and your iNethi, and will soon provide single sign-on to many of these services. A great resource for many self-hosted services that can be ported to iNethi is here Self hosted servces

Build

The flow of an iNethi install process:

  1. Install Ubuntu Server 22 LTS
  2. Clone this repo
  3. Run the following command from the root folder:
sudo ./build_all.sh

To build a server and select the services you want to use

  1. Make the necessary firewall/host redirects
  2. Set up services

Usage

This is an open source solution that is freely available to everyone, just keep it open source! With iNethi you can build a set of local services to share content amongst your local community and build a small ISP to sell Internet vouchers. More detail...

We offer bespoke services, support and payment integrations upon request. Contact us at: [email protected].

Network notes

  • iNethi makes use of traefik as a reverse proxy to route hosts to a specific docker container
  • Docker will automatically create a bridged network which bridges traefik to the host Ethernet interface on your computer
  • The services will be available at various URLs once you have set up a firewall/dns redirect. The URLs are:
    • splash.inethilocal.net
    • nextcloud.inethilocal.net
    • wordpress.inethilocal.net
    • keycloak.inethilocal.net
    • jellyfin.inethilocal.net
    • radiusdesk.inethilocal.net
    • traefik.inethilocal.net

Set Up Firewall/DNS redirect

  • On a firewall on your network like Pfsense, make a widlcard DNS resolve entry. Under services / dns resolver / general settings enable 'diplay custom options' and enter the follwoing:
server:
local-zone: "<URL>" redirect
local-data: "<URL> 86400 IN A <SERVER IP>"

where URL is the domain name i.e. for 'nextcloud.inethilocal.net' you would enter 'inethilocal.net' and the 'SERVER IP'is the IP address of the device hosting the services you want to redirect to.

Recommended: set a static IP address for your server

Set up a Redirect on your local machine

To set up a local redirect on a Mac or Ubuntu machine edit your hosts file sudo nano /etc/hosts and add an entry for the URL of each service with your local machine's IP address like this to the end of your host file like this:

# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost
# Added by Docker Desktop
# To allow the same kube context to work on the host and the container:
127.0.0.1 kubernetes.docker.internal
# End of section
192.168.68.105 jellyfin.inethilocal.net
192.168.68.105 treafik.inethilocal.net
192.168.68.105 nextcloud.inethilocal.net

The following three lines were added:

192.168.68.105 jellyfin.inethilocal.net
192.168.68.105 treafik.inethilocal.net
192.168.68.105 nextcloud.inethilocal.net

Where 192.168.68.105 is an example host IP address. Visit services in your browser on the URLs corresponding to your installed services and entries in your host file to see the front end.

Core docker containers

  • nginx: runs splash page
  • traefik: reverse proxy

Dependency dockers:

  • mariadb: database
  • mysql: database
  • phpmyadmin: database management
  • mongo: database
  • mysql-keycloak: database - seperate mysql for keycloak

Elective dockers:

  • nextcloud: File sharing system and collaboration platform
  • Jellyfin: video streaming platform
  • radiusdesk3: Voucher management system
  • keycloak: single sign on tool

Post docker installation steps

Once all the docker are running there are some remaining configurations steps

Nextcloud

Choose a master username and password and storage location

  • user: inethiadmin (suggestion)
  • password: (pick a secure password)
  • storage location: (leave as default)

configure database

Select MySQL/MariaDB (under configure the database)

  • Database user: inethi
  • password:
  • database name: inethi_nextcloud
  • database: inethi-nextcloud-mysql

Once Nextcloud launches login as administrator

  • Select Apps from top right icon
  • Select Disabled Apps
  • Enable External storage support

Add a Public Group

  • Select Users option when clicking on Administator user icon
  • Select Add Group - Enter Public

Add External storages

  • Select Administator user - select Settings
  • Bottom left - select External storages

Add the following:

  • Folder name: Rshare , External storage: Local, Configuration /mnt/Rshare, Available for Public, Options: Enable Sharing, Read only
  • Folder name: Rvideo, External storage: Local, Configuration /mnt/Rvideo, Available for Public, Options: Enable Sharing, Read only
  • Folder name: Rmusic, External storage: Local, Configuration /mnt/Rmusic, Available for Public, Options: Enable Sharing, Read only
  • Folder name: Rphoto, External storage: Local, Configuration /mnt/Rphoto, Available for Public, Options: Enable Sharing, Read only
  • Folder name: RWshare , External storage: Local, Configuration /mnt/Rshare, Available for admin, Options: Enable Sharing
  • Folder name: RWvideo, External storage: Local, Configuration /mnt/Rvideo, Available for admin, Options: Enable Sharing
  • Folder name: RWmusic, External storage: Local, Configuration /mnt/Rmusic, Available for admin, Options: Enable Sharing
  • Folder name: RWphoto, External storage: Local, Configuration /mnt/Rphoto, Available for admin, Options: Enable Sharing

Jellyfin

Complete Tell us about yourself

  • Username: inethiadmin (suggestion)
  • Password: select a strong password

Add video library

  • Select Add Media library
  • Content type: Movies
  • Display name: Videos
  • Folders (+)
  • Folder: /mnt/Rvideo
  • Select OK

Add music library

  • Select Add Media library
  • Content type: Music
  • Display name: Music
  • Folders (+)
  • Folder: /mnt/Rmusic
  • Select OK

Add content

To add music and video content that van be viewed on Jellyfin. Open Nextcloud, login as administrator or a user with administrator priveledges and Drag videos to the RWVideo folder or Drag music to the RWMusic folder

Added Synchronization

You can contact iNethi to get some space on the global iNethi cloud - a folder allocated for your organization will synchronize with your local iNethi instance. We will allocate a folder for you. Contact us at [email protected] for pricing arrangement if you require global storage options.

You will receive a login to the global iNethi storage and a Webdav link you will need to enter when you run the following code

./build_sync.sh

Useful Docker Commands

  • docker stop $(docker ps -a -q) - stop all docker containers
  • docker rm $(docker ps -a -q) - remove all stopped docker containers

master-builder's People

Contributors

mozartatplay avatar keeganwhite avatar pieterhop avatar innoobijr avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.