First connect to the PG server using psql and as your DB owner account or the superuser account.
Create the user and set a password. Here I am creating user rouser with a password of R34D0NLY.
CREATE ROLE rouser WITH ENCRYPTED PASSWORD 'R34D0NLY';
Next, switch to your database context (here my database is named mydatabase, and my superuser is named postgres)
postgres=# \connect mydatabase;
The prompt will switch to:
No execute the following (be sure to swap out your username with my rouser username):
GRANT USAGE ON SCHEMA public to rouser;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO rouser;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO rouser;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO rouser;
Now your user has readonly access to the schema public. If you are creating tables and other database objects in another schema you will need to do the same thing but replace public with your other schema name.
Allow a user to use a sequence:
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public to rouser;