Trigger to track changes
I also considered a trace, but it can be easly stopped or it will not
  restart at server start.


You can have a server side trace as a SQL Agent Job and set up the job to start whenever SQL agent start and a second schedule to start every xx number of minute.  That way job will always start and second schedule will take care if somebody stop it by mistake.


  Is the trigger the wrong way? Can I fix this in some way?


I suggest you create a database role and make all the users member of that role. I understand your concern of forgetting to add users to the role or assign permission. I personally do not prefer to have too many users with privilege to change schema in my database so the list should be small and a role will make it easy for you to manage the privilege.