Etopa is a two-factor-authentication app, which runs as a web server and can be accessed using a web browser or using an Android app. Feel free to suggest feature implementations or report bugs by creating an Issue on GitHub.
You can use the Etopa.de instance or host your own.
F-Droid: Add repository and search for Etopa
Google Play Store: Etopa 2FA
Amazon Appstore: Etopa
Samsung Galaxy Store: Etopa
Clone repo
git clone https://ltheinrich.de/etopa && cd etopa
Configure
./configure
Build
DEBUG_SIGN=y make
API server: target/build/etopa
Android APK: target/build/etopa.apk
Web archive: target/build/etopa.tar.xz
You can expose the container ports 80
, 443
and 4490
.
On port 80
/443
(HTTP/HTTPS) nginx serves as a reverse proxy for the backend and as a web server for the frontend.
If you only need the Etopa backend, you can instead use port 4490
(HTTP).
Configuration file paths relative to the volume directory for /etopa/
Etopa server/backend: etopa.conf
Etopa frontend: config.js
nginx: nginx.conf
TLS certificate/key/fullchain/dhparam: cert.pem
/privkey.pem
/fullchain.pem
/dhparam.pem
If there are no configuration files provided, the default will be used.
Download docker-compose.yml
curl -o docker-compose.yml https://raw.githubusercontent.com/ltheinrich/etopa/master/docker/docker-compose.yml
Start Etopa
docker compose up -d
Unless you modify the docker-compose.yml
the directory ./etopa/
will be created. User data will be stored in ./etopa/data/
and configuration files (etopa.conf
for the backend and config.js
for the frontend) can be placed directly in ./etopa/
(using no/default configuration files works as well).
Pull image ltheinrich/etopa:latest
docker pull ltheinrich/etopa:latest
Start Etopa
docker run -d --name etopa -v ./etopa/:/etopa/ --restart always -p 127.0.0.1:8080:80 -p 127.0.0.1:8443:443 -p 127.0.0.1:4490:4490 ltheinrich/etopa:latest