Epilykos Wiki
Settings

Security

The admin password and two-step sign-in.

Anyone who can reach your dashboard can look at it; that's by design, so the whole household can keep an eye on things. Everything that changes something is locked behind the admin password: Settings, the layout editor, the card showcase, the Controls page and the REST API. Settings → Security lets you add a second step to that sign-in.

The admin password

You choose the admin password in the first step of the setup wizard.

  • To change it, sign in, open /setup, and set a new password in the first step. Generate a strong password will make one for you.
  • On Docker with SETTINGS_PASSWORD, the password comes from the compose file and can't be changed in the app. Edit it there and run docker compose up -d.
  • If you've forgotten it, see Password and factory reset on EpilykosOS. On Docker, set SETTINGS_PASSWORD under environment: in the compose file.

Use at least 12 characters. Epilykos won't open to the internet (with Tailscale's Open to the internet or a Cloudflare Tunnel) with a shorter password. A shorter password you set earlier still signs you in, but change it before you switch on remote access.

Epilykos uses a few different passwords, each with its own rules:

PasswordWhat it's forLength
Admin passwordSigning in, Settings, the layout editor, the REST API, and unlocking the Controls page12 or more
SSH maintenance login (EpilykosOS)Logging in to the box as epilykos over SSH8 to 128
Backup passphraseProtecting the saved passwords inside a downloaded backup8 to 256

Two-step sign-in

Two-step sign-in asks for a 6-digit code from an authenticator app (Google Authenticator, Microsoft Authenticator, 1Password and the like) after your password. It's free and works without an internet connection.

Two-step sign-in in Settings → Security, switched off

Turn on the switch and enter your password. Scan the QR code with your authenticator app, then type in the code it shows.

Save the 10 recovery codes. They're only shown once. If you ever lose your phone, each code gets you in one time. New recovery codes replaces the whole set.

From now on, you sign in with your password and then a code (or a recovery code). Turning two-step sign-in off, or making new recovery codes, asks for both your password and a current code.

A few things worth knowing:

  • Codes only match if the box's clock is within about a minute of your phone's. A box without internet can slowly drift; if a code is refused, the sign-in page shows you the box's time, and a recovery code always works.
  • Each code works only once, so nobody can reuse one they've seen, and after five wrong codes you're sent back to the password.
  • The setting is kept in data/two-step.json, with its secret encrypted by the app's encryption key. A database backup doesn't include it, so a restored box starts with two-step sign-in off.

Locked out of two-step sign-in

Resetting the admin password also switches two-step sign-in off, so a lost phone never locks you out for good.

  • On EpilykosOS, put a dashboard-password.txt file on the boot drive, or run sudo epilykos-reset-password on the console. See Password and factory reset.
  • On Docker, use the RESET_TWO_STEP switch:

In docker-compose.yaml, uncomment the environment: line if it's still commented out, and add - RESET_TWO_STEP=true under it. Uncomment only that line and the one you add: the commented lines below environment: (the time zone and, in newer compose files, the admin password) stay off unless you want them.

Run docker compose up -d, then sign in with just your password.

Remove the RESET_TWO_STEP line again (and comment out environment: if nothing else is left under it), then run docker compose up -d once more. Until you do, two-step sign-in is switched off every time Epilykos starts.

Saved passwords and tokens

The passwords and tokens you save in Settings (for Solcast, MQTT, Home Assistant, Tuya, notification channels, the Cloudflare tunnel and so on) are stored encrypted, with a key kept in data/encryption-key. To move them to another box, see Backup and restore.

Last updated on

On this page