A self-hosted captive portal connectivity check: https://connectivitycheck.sp-codes.de
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Samuel Philipp bfe39bd87e Merge pull request 'Update nginx Docker tag to v1.19.6' (#3) from renovate/docker-nginx-1.x into master 1 month ago
.drone.yml fixed arm64 to .drone.yml 1 month ago
.gitignore added initial files 1 year ago
Dockerfile Update nginx Docker tag to v1.19.6 1 month ago
LICENSE Initial commit 1 year ago
README.md minor improvements 6 months ago
nginx.conf added nginx config, Dockerfile and ci build with .drone.yml 8 months ago
renovate.json updated .drone.yml 1 month ago



Build Status License Docker Pulls

A self-hosted captive portal connectivity check.


Just run the following command:

docker run -d -p 80:80 -p 443:443 samuelph/connectivity-check

Or with docker-compose:

version: '3.4'

    image: samuelph/connectivity-check
    restart: always
      - 80:80
      - 443:443

Run on a simple web space

Instead of running the docker image you also can just use the following .htaccess file on your web server:

RewriteEngine On

Header always set "X-NetworkManager-Status" "online"

RewriteCond "%{REQUEST_FILENAME}" "(generate)?_?204"
RewriteRule "(generate)?_?204" / [R=204,L]

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Setup your devices


To change the Captive Portal Check in Android, you need a terminal app or a connection via ADB to a computer.

To use http you can run the following commands with the respective method:

# settings put global captive_portal_use_https 0
# settings put global captive_portal_http_url "http://connectivitycheck.sp-codes.de/generate204"

To use https you can use the following two commands:

# settings put global captive_portal_use_https 1
# settings put global captive_portal_https_url "https://connectivitycheck.sp-codes.de/generate204"

Maybe you have to reboot your phone after updating the settings.

If you are using AFWall+ you need to give access to [1000] Android-System and in some cases [10040] CaptivePortalLogin to make it work.

For more information see here.


In Ubuntu, the file /etc/NetworkManager/NetworkManager.conf must be changed. Add or change the following lines:


Restart the network-manager:

sudo service network-manager restart

For more information see here.


Type about:config in the Firefox address bar and search for captivedetect.canonicalURL and network.connectivity-service. Set the URL values to https://connectivitycheck.sp-codes.de/generate204, the domain values to connectivitycheck.sp-codes.de. That's it.


connectivity-check is Free Software: It is licensed under MIT (See LICENSE for more information).