socks5-proxy-server

SOCKS5 proxy server with built-in authentication and Telegram-bot for user management and user statistics on data spent . It is dockerised and simple to install.
04 Apr 2020172

Socks5 proxy server

Prerequisites

How to run

  • Copy .env.example file: cp .env.example .env
  • Fill in configuration: nano .env. Fields:
    • APP_PORT - proxy server port (default: 54321),
    • LOG_LEVEL - log level (default: INFO),
    • REQUIRE_AUTH - if set to 1, anonymous users are not allowed.
  • Start application: docker-compose up -d

CLI commands

In all commands you need to call js-script in app docker container.
So you need to find out container name with proxy application by running the following command:

docker-compose ps

For example, it will be socks5proxy_proxy_1.

In all the following commands you need to replace socks5proxy_proxy_1 with the yours container name.

Create user

docker exec -it socks5proxy_proxy_1 sh -c 'exec node scripts/create-user.js'

Delete user

docker exec -it socks5proxy_proxy_1 sh -c 'exec node scripts/delete-user.js'

Show users statistics

docker exec -it socks5proxy_proxy_1 sh -c 'exec node scripts/users-stats.js'

Telegram bot for administration

Configuration

  • Initialize bot at @botfather, get API token
  • Set params in .env:
    • PUBLIC_URL - URL to server. E.g. http://proxy.domain.com:8443
    • TELEGRAM_API_TOKEN - API token from BotFather
    • TELEGRAM_WEBHOOK_URL - default: /webhook
    • TELEGRAM_USE_WEBHOOKS - 1 - use webhooks, 0 - use polling. To use webhooks you need to generate ssl certificates
  • Create admin:
docker exec -it socks5proxy_telegram_bot_1 sh -c 'exec node scripts/create-admin.js' 

Available commands

  • /users_stats - show data usage statistics per user
  • /create_user - create new proxy user
  • /delete_user - delete proxy user
  • /get_users - get list of proxy users
  • /generate_pass [length] - generate random password with specified length (10 by default)