Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # 🐳 Docker Ubuntu Setup Guide with SSH & Local Chat Server Access (Onion link) labs.play-with-docker.com
- ####################################################################
- Join our telegram channel: https://t.me/LinuxClassesEFXTv
- ####################################################################
- Go to https://labs.play-with-docker.com/ or setup docker in local machine
- Paste the public keys we are going to generate in in local machine to the location ~/.ssh/authorized_keys
- Generate ssh keys in local machine
- $ mkdir ~/sshserver
- $ cd sshserver
- $ ssh-keygen -t ed25519 (Enter the phrase 2 times)
- # Paste the keys to the lab.play-with-docker.com in
- vi ~/.ssh/authorized_keys
- # Connect to machine labs.play***
- chmod 600 keyname
- ssh -i ~/sshserver/keyname ********************.labs.play-with-docker.com
- ####################################################################
- ## Step 1: Pull the Ubuntu Docker Image
- docker pull ubuntu
- ####################################################################
- ## Step 2: Create and Start the Docker Container
- docker run -dit --name chatserver -p 2222:22 -p 8080:8080 ubuntu
- #EXPLAIN:
- Syntax Part Explanation
- docker run This is the base Docker command to create and start a new container from an image.
- -d Detached mode — runs the container in the background. You won’t see its output directly.
- -i Interactive mode — keeps STDIN open for input, useful when working inside the container.
- -t TTY (terminal) — allocates a pseudo-terminal. Allows you to run shell/bash commands.
- --name sshbox Assigns a custom name to the container (sshbox in this case) for easier reference.
- -p 2222:22 Port mapping → Maps host port 2222 to container’s port 22 (commonly used by SSH).
- -p 8080:8080 Maps host port 8080 to container’s 8080 — useful for running a web server.
- ubuntu The base image to use here, we’re pulling and running the official Ubuntu image.
- ####################################################################
- ## Step 3: Access the Container
- docker exec -it chatserver bash
- EXPLAIN:
- docker exec Runs a command inside an already running container.
- -i Interactive mode — keeps STDIN open so you can type commands.
- -t TTY (pseudo-terminal) — gives you a usable terminal inside the container.
- sshbox The name of the container you want to connect to (as set earlier).
- bash The command you want to run inside the container — here it's bash shell.
- ####################################################################
- ## Step 4: Set Up Inside the Container
- apt update && apt upgrade -y;apt install -y openssh-server python3-full curl wget php vim sudo unzip net-tools
- sudo passwd root
- ## Step 7: Enable SSH Login
- nano /etc/ssh/sshd_config
- # Set the following:
- PermitRootLogin yes
- PasswordAuthentication yes
- # Then restart SSH:
- mkdir -p /var/run/sshd
- service ssh restart
- ## Step 9: Shared Directory
- mkdir -p /root/shared
- # Try to connect to ssh in docker
- ssh root@localhost
- ## Step 8: This detaches you from a Docker container’s terminal without stopping it.
- Ctrl + P then Ctrl + Q
- # Try to connect outside the docker container
- ssh root@localhost
- # Create and activate Python virtual environment
- python3 -m venv myenv
- source myenv/bin/activate
- # Install pyngrok
- pip install pyngrok
- # ngrok config add-authtoken YOUR_AUTH_TOKEN
- ngrok config add-authtoken **************************************
- # Start ngrok tcp 2222
- ngrok tcp 2222
- # Then forward SCP: (join our telegram to get the file)
- scp -P PORT chat.zip root@IPADDRESS:/root/shared
- # Close the tunnel once copied
- ctrl + c
- ####################################################################
- ## Step 6: Resume the docker container
- docker start -ai chatserver
- EXPLAIN:
- Syntax Part Explanation
- docker start Starts a stopped container (does not create a new one).
- -a Attach — connects your terminal to the container’s STDOUT/STDERR output.
- -i Interactive mode — keeps STDIN open so you can interact with the container.
- sshbox The name of the container you want to start (defined earlier with --name).
- ####################################################################
- ####################################################################
- ## Step 11: Start local werb server in background
- php -S 0.0.0.0:8080 > /dev/null 2>&1 &
- EXPLAIN:
- php -S 0.0.0.0:8080 Starts PHP’s built-in server on all interfaces (0.0.0.0) and listens on port 8080. Useful for serving a local website or PHP app.
- > /dev/null Redirects standard output (stdout) to /dev/null, essentially hides normal output.
- 2>&1 Redirects standard error (stderr) to the same place as stdout — i.e., also hidden.
- & Runs the whole command in the background, so your terminal is free for other tasks.
- ####################################################################
- ## Detaches from Docker container AGAIN
- Ctrl + P then Ctrl + Q
- ## Step 12: Start http server
- ngrok http localhost:8080
- ## Step 13: Reattach to Container (Optional)
- docker attach sshbox
- ## Fix SSH WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
- # Error: Host key verification failed
- # Solution:
- vi ~/.ssh/known_hosts
- # Delete line with: [localhost]:2222
- # Retry SSH:
- ssh root@localhost -p 2222
- ####################################################################
- ✅ Step-by-Step: Expose Your PHP Server via Tor
- 🛠️ 1. Install Tor
- On Ubuntu/Debian:
- sudo apt update
- sudo apt install tor
- 📂 2. Edit Tor Configuration
- sudo vi /etc/tor/torrc
- At the end, add the following lines:
- HiddenServiceDir /var/lib/tor/php_hidden_service/
- HiddenServicePort 80 127.0.0.1:8080
- 🔄 3. Restart Tor
- sudo systemctl restart tor
- 🧪 Example Combined Setup
- php -S 127.0.0.1:8080 > /dev/null 2>&1 &
- ✅ Workaround: Start Tor Manually (Without systemd)
- tor &
- ✅ Check Tor Output
- cat /var/lib/tor/php_hidden_service/hostname
- ####################################################################
- Create onion link in termux
- ####################################################################
- # Set up a Tor-accessible PHP website on Termux
- # Step 1: Update & install required packages
- pkg update && pkg upgrade -y
- pkg install tor php wget git -y
- # Step 2: Create PHP site
- mkdir -p ~/website
- cat << 'EOF' > ~/website/index.php
- <?php
- echo "Hello, Dark Web!";
- ?>
- EOF
- # Get in to project root
- chmod -R 755 ~/website
- chmod -w index.php
- cd ~/website
- # Start PHP server
- php -S 127.0.0.1:8080
- or
- php -S 127.0.0.1:8080 -t /sdcard/web
- or
- python3 -m http.server 8080
- # Step 3: Configure Tor hidden service
- mkdir -p ~/.tor/hidden_service
- chmod 700 ~/.tor/hidden_service
- cat << 'EOF' > ~/.torrc
- HiddenServiceDir /data/data/com.termux/files/home/.tor/hidden_service/
- HiddenServicePort 80 127.0.0.1:8080
- EOF
- # Step 4: Start Tor service
- tor
- # Step 5: Get the .onion link
- cat ~/.tor/hidden_service/hostname
- # Done! Visit page
Add Comment
Please, Sign In to add comment