Mooshak Server #
Setup #
To setup a mooshak server you will need git, docker and docker compose (comes with docker itself in latest versions) installed.
Go to directory of your choice and clone the project.
git clone https://github.com/sepgh/mooshak
Next, go to newly cloned mooshak directory and then navigate to server directory.
cd mooshak # cloned directory
cd server # server scripts
After that, create required docker volume and networks, then you can start mooshak by runing the docker compose:
# Network and volume:
docker volume create mooshak_sshd
docker network create mooshak
# Running:
docker compose up -d # or: docker-compose up -d
Congradulations! You have mooshak ready to be used. The SSH server will be available on port 2255, and websocket tunnel will be available on port 3344.
To stop the mooshak server go to the same directory and then use:
docker compose down
Managing users #
The mooshak container has scripts installed to help you add or remove users.
First you need to find the running container:
docker ps
Example output:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ac057f82ebd8 mooshak10-wstunnel "/bin/sh -c '/wstunn…" 3 seconds ago Up 2 seconds 0.0.0.0:3344->80/tcp, :::3344->80/tcp mooshak10-wstunnel-1
64f256e4f023 mooshak "/entrypoint.sh" 3 seconds ago Up 3 seconds 0.0.0.0:2255->22/tcp, :::2255->22/tcp mooshak_sshd
The container ID we are looking for is 64f256e4f023 in this example, with image name mooshak_sshd.
To add a new user (or update their password) use:
$ docker exec <COONTAINER ID HERE> /adduser.sh <username> <password>
# Eaxmple valid output: chpasswd: password for 'test' changed
To remove a user (and terminate their open session) use:
$ docker exec <COONTAINER ID HERE> /deleteuser.sh <username>
# Example valid output: deluser: can't find test in /etc/group
Run behind Nginx - Websocket #
You can configure your Nginx setup to forward websocket connections to websocket port listened by Mooshak WsTunnel (3344).
Here is a sample path configuration to add to your Nginx setup:
location /mooshak {
proxy_pass http://127.0.0.1:3344;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 10m;
proxy_send_timeout 10m;
proxy_read_timeout 90m;
send_timeout 10m;
}
Reload your Nginx service and you are good to go.