Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

500 Internal Server Error When Visiting /sign-up #9

Closed
jimmybrancaccio opened this issue May 8, 2023 · 4 comments
Closed

500 Internal Server Error When Visiting /sign-up #9

jimmybrancaccio opened this issue May 8, 2023 · 4 comments

Comments

@jimmybrancaccio
Copy link

I've finally had a moment to try this out. I've setup the containers in my docker-compose.yml file and launched the server and frontend containers. Unfortunately when I click on the Sign Up button I get a lovely 500 ISE error. The frontend container logs:

ClientResponseError 404: Something went wrong while processing your request.
    at new ClientResponseError (file:///app/node_modules/pocketbase/dist/pocketbase.es.mjs:1:2306)
    at file:///app/node_modules/pocketbase/dist/pocketbase.es.mjs:1:45475
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async getServerSideProps (/app/.next/server/pages/sign-up.js:152:25) {
  url: 'https://share.mydomain.com/api/collections/users/auth-methods',
  status: 404,
  response: {},
  isAbort: false,
  originalError: null
}

which oddly enough seems to be a 404. My docker-compose.yml:

  share-me-frontend:
    image: ghcr.io/dan6erbond/share-me-frontend:latest
    container_name: share-me-frontend
    labels:
      - traefik.http.routers.share-me-frontend.rule=Host(`share.mydomain.com`)
      - traefik.http.routers.share-me-frontend.entrypoints=websecure
      - traefik.http.routers.share-me-frontend.service=share-me-frontend
      - traefik.http.routers.share-me-frontend.tls=true
      - traefik.http.routers.share-me-frontend.tls.certresolver=letsencrypt
      - traefik.http.routers.share-me-frontend.tls.domains[0].main=share.mydomain.com
      - traefik.http.services.share-me-frontend.loadbalancer.server.port=3000
    environment:
      - POCKETBASE_URL=${SHARE_ME_POCKETBASE_URL}
    networks:
      - production
    depends_on:
      - traefik
    restart: unless-stopped
  share-me-server:
    image: ghcr.io/dan6erbond/share-me-server:latest
    container_name: share-me-server
    labels:
      - traefik.enable=false
    volumes:
     - ${DOCKER_DATA_DIR}/share-me/pb_data:/pb/pb_data
    networks:
      - production
    depends_on:
      - traefik
    restart: unless-stopped

Any ideas! Thanks! 😁

@Dan6erbond
Copy link
Owner

Dan6erbond commented May 8, 2023

Hi there! The Next.js server is most likely throwing a 500 internal server error because the 404 is caught as a generic error in the server-side rendering process.

My guess is you didn't setup PocketBase yet, which you can do by going to https://shareme.example.com/_/ and follow the installation wizard.

You can also use the PocketBase UI to manage settings like S3, SMTP and authentication providers.

Keep in mind, your PocketBase admin user isn't the same as the Share Me user which can be created on the sign-up page or in the PocketBase UI by going to the users collection.

Let me know if this solves the issue for you. I'll keep it open until then and turn it into a discussion if it has to do with setting up PocketBase, otherwise I might have to look into the bug.

@Dan6erbond
Copy link
Owner

Another point: Your config won't work. PocketBase's UI needs to be reachable at /_ and the API at /api so you need to configure Traefik for it.

@jimmybrancaccio
Copy link
Author

Hey @Dan6erbond! Thanks for the follow up! I was able to get it working properly using:

share-me-frontend:
    image: ghcr.io/dan6erbond/share-me-frontend:latest
    container_name: share-me-frontend
    labels:
      - traefik.http.routers.share-me-frontend.rule=Host(`share.mydomain.com`)
      - traefik.http.routers.share-me-frontend.entrypoints=websecure
      - traefik.http.routers.share-me-frontend.service=share-me-frontend
      - traefik.http.routers.share-me-frontend.tls=true
      - traefik.http.routers.share-me-frontend.tls.certresolver=letsencrypt
      - traefik.http.routers.share-me-frontend.tls.domains[0].main=share.mydomain.com
      - traefik.http.services.share-me-frontend.loadbalancer.server.port=3000
    environment:
      - POCKETBASE_URL=${SHARE_ME_POCKETBASE_URL}
    networks:
      - production
    depends_on:
      - traefik
    restart: unless-stopped
  share-me-server:
    image: ghcr.io/dan6erbond/share-me-server:latest
    container_name: share-me-server
    labels:
      - traefik.http.routers.share-me-server.rule=Host(`share.mydomain.com`) && (PathPrefix(`/api`) || PathPrefix(`/_/`))
      - traefik.http.routers.share-me-server.entrypoints=websecure
      - traefik.http.routers.share-me-server.service=share-me-server
      - traefik.http.routers.share-me-server.tls=true
      - traefik.http.routers.share-me-server.tls.certresolver=letsencrypt
      - traefik.http.routers.share-me-server.tls.domains[0].main=share.mydomain.com
      - traefik.http.services.share-me-server.loadbalancer.server.port=8080
    volumes:
     - ${DOCKER_DATA_DIR}/share-me/pb_data:/pb/pb_data
    networks:
      - production
    depends_on:
      - traefik
    restart: unless-stopped

Once in, I was able to easily configure Vultr Object Storage and SMTP. I'd never heard of PocketBase before but I looked at their site and it definitely seems like a neat tool. Seems like it saves a lot of time! It kind of reminds me of Strapi.

I'll be keeping an eye on this project for sure 😄

@Dan6erbond
Copy link
Owner

Awesome, I'm glad it worked out! Your config looks much better now with the path-prefixes for PocketBase.

Yes, PocketBase is really nice. It has everything that I usually would want to implement manually, things like OIDC and S3 that make it harder to use other low-code tools like it. I also like that you can write your own Go logic with event hooks, commands, API routes, etc. which I leveraged in #11 to delete files when a post is deleted and am using on feat/search to automatically sync documents with Meilisearch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants