Fresh install just login/register pages

Hey, loved the demo and figured I’d try to deploy Vikunja at home to help my family get a bit more organized.
I got the back and front ends installed, but I must’ve gotten wires crossed. I get the web interface but cannot register. Any idea where I might have gone wrong?
This is the console error report pulled from Opera.

Microsoft Edge gives a different set: (maybe the same causes?)

  1. Unhandled promise rejection Error: Network Error
  2. CONSOLE21301: serviceWorker.register is rejected due to unsecure context or host restriction in
  3. Error during service worker registration: SecurityError

Apache vikunja.config:
<VirtualHost :80>
ServerName vikunja
DocumentRoot /var/www/html
RewriteEngine On
RewriteRule ^/?(config.json|favicon.ico|css|fonts|images|img|js) - [L]
RewriteRule ^(.
)$ /index.html [QSA,L]

Vikunja config
$This token is used to verify issued JWT tokens.
$Default is a random token which will be generated at each startup of vikunja.
$ (This means all already issued tokens will be invalid once you restart vikunja)
JWTSecret: “”
$ The interface on which to run the webserver
interface: “:3456”
$ The URL of the frontend, used to send password reset emails.
frontendurl: “”
$ The base path on the file system where the binary and assets are.
$ Vikunja will also look in this path for a config file, so you could provide only this variable to point to a folder
$ with a config file which will then be used.
$ The max number of items which can be returned per page
maxitemsperpage: 50
$ If set to true, enables a /metrics endpoint for prometheus to collect metrics about the system
$ You’ll need to use redis for this in order to enable common metrics over multiple nodes
enablemetrics: false
$ Enable the caldav endpoint, see the docs for more details
enablecaldav: true
$ Set the motd message, available from the /info endpoint
motd: “”
$ Enable sharing of lists via a link
enablelinksharing: true
$ Whether to let new users registering themselves or not
enableregistration: true
$ Whether to enable task attachments or not
enabletaskattachments: true
$ The time zone all timestamps are in
timezone: GMT
$ Whether task comments should be enabled or not
enabletaskcomments: true

$ Database type to use. Supported types are mysql, postgres and sqlite.
type: “sqlite”
$ Database user which is used to connect to the database.
user: “vikunja”
$ Databse password
password: “behrum2”
$ Databse host
host: “localhost”
$ Databse to use
database: “vikunja”
$ When using sqlite, this is the path where to store the data
Path: “./vikunja.db”
$ Sets the max open connections to the database. Only used when using mysql and postgres.
maxopenconnections: 100
$ Sets the maximum number of idle connections to the db.
maxidleconnections: 50
$ The maximum lifetime of a single db connection in miliseconds.
maxconnectionlifetime: 10000
$ Secure connection mode. Only used with postgres.
$ (see
sslmode: disable

$ If cache is enabled or not
enabled: false
$ Cache type. Possible values are memory or redis, you’ll need to enable redis below when using redis
type: memory
$ When using memory this defines the maximum size an element can take
maxelementsize: 1000

$ Whether to enable redis or not
enabled: false
$ The host of the redis server including its port.
host: ‘localhost:6379’
$ The password used to authenicate against the redis server
password: ‘’
$ 0 means default database
db: 0

$ Whether to enable or disable cors headers.
enable: true
$ A list of origins which may access the api.
- localhost:80
- localhost:3456
$ How long (in seconds) the results of a preflight request can be cached.
maxage: 0

$ Whether to enable the mailer or not. If it is disabled, all users are enabled right away and password reset is not possible.
enabled: false
$ SMTP Host
host: “”
$ SMTP Host port
port: 587
$ SMTP username
username: “user”
$ SMTP password
password: “”
$ Wether to skip verification of the tls certificate on the server
skiptlsverify: false
$ The default from address when sending emails
fromemail: “mail@vikunja”
$ The length of the mail queue.
queuelength: 100
$ The timeout in seconds after which the current open connection to the mailserver will be closed.
gueuetimeout: 30

$ A folder where all the logfiles should go.
path: logs
$ Whether to show any logging at all or none
enabled: true
$ Where the error log should go. Possible values are stdout, stderr, file or off to disable error logging.
errors: “stdout”
$ Where the normal log should go. Possible values are stdout, stderr, file or off to disable standard logging.
standard: “stdout”
$ Whether or not to log database queries. Useful for debugging. Possible values are stdout, stderr, file or off to disable database logging.
database: “off”
$ Whether to log http requests or not. Possible values are stdout, stderr, file or off to disable http logging.
http: “stdout”
$ Echo has its own logging which usually is unnessecary, which is why it is disabled by default. Possible values are stdout, stderr, file or off to disable standard logging.
echo: “off”

$ whether or not to enable the rate limit
enabled: false
$ The kind on which rates are based. Can be either “user” for a rate limit per user or “ip” for an ip-based rate limit.
kind: user
$ The time period in seconds for the limit
period: 60
$ The max number of requests a user is allowed to do in the configured time period
limit: 100
$ The store where the limit counter for each user is stored. Possible values are “memory” or “redis”
store: memory

$ The path where files are stored
basepath: ./files # relative to the binary
$ The maximum size of a file, as a human-readable string.
$ Warning: The max size is limited 2^64-1 bytes due to the underlying datatype
maxsize: 20MB

$ These are the settings for the wunderlist migrator
$ Wheter to enable the wunderlist migrator or not
enable: false
$ The client id, required for making requests to the wunderlist api
$ You need to register your vikunja instance at to get this
$ The client secret, also required for making requests to the wunderlist api
$ The url where clients are redirected after they authorized Vikunja to access their wunderlist stuff.
$ This needs to match the url you entered when registering your Vikunja instance at wunderlist.
$ This is usually the frontend url where the frontend then makes a request to /migration/wunderlist/migrate
$ with the code obtained from the wunderlist api.
$ Note that the vikunja frontend expects this to be /migrate/wunderlist

Is it able to get the frontend assets? Could you show the requests from the network tab?

Did you configure the api url in the frontend?

The network tab

I have the frontend index.html pointing to “window.API_URL = ‘’”, which I can access via broswer no problem.

Can you show the full response of the logo-full.svg request (the only one that failed)?

When you try to register, what requests does it make (network tab again)? Are they succeeding or failing? Can you show the request with the response (obfuscate any passwords)?

The service worker error is because the site is served over http instead of https which is required for service workers - that should not be an issue though, Vikunja should still work. And especially it should not be responsible for the whole thing not working…

logo-full.svg just give the following details

When I hit register, nothing presents over the network tab.
The only thing that happens when I hit register is a new message in console:

Which points to: /js/chunk-vendors.73f6deab.js and the length of code on line 21

logo-full.svg just give the following details

I need to see the server response :slight_smile: (the one under “Response” in the details view in your screenshot)

The error message is definitely weird. Do you have anything in place that might prevent your browser from setting local storage items (adblocker, script blocker etc)? Are you able to use the demo at

Can you verify if the user was successfully created? A simple select * from users on your db would do, and then verify if the user you registered shows up in the output.

When I hit register, nothing presents over the network tab.

The other weird thing is the error message indicates an error as part of an api request, so there should be something in the network tab.

(Hope this is the right one!)
The demo at works fine for me.
sqlite seems to indicate the user table is empty.

Let me try digging around and seeing if I might have made a permission error somewhere.

So turning off the backend gives me similar errors. So I must not have connected them properly?

Wait have you set the api URL in the frontend to or The frontend does not assume any protocol, so it could be that is the issue here. It should still try to make the request though.

The permission error for the logo could very well be a permission error on the server, can you verify that?

It should however not prevent everything else from working properly, so maybe these are two separate issues.

Well, it looks like somewhere I made a configuration error. I spun it up from scratch and this time it works.
Now I just have to figure out why I still get some images as forbidden!

And swapping to https solved the logo issue!

Huh, glad you figured it out!