diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..c9b9f80 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +.git +.github +.env.example \ No newline at end of file diff --git a/.env.example b/.env.example index 46eda2a..3504c65 100644 --- a/.env.example +++ b/.env.example @@ -8,8 +8,18 @@ NEXT_PUBLIC_LICENSE_CONSENT= LICENSE= -BASE_URL=http://localhost:3000 -NEXT_PUBLIC_APP_URL=http://localhost:3000 +# BASE_URL and NEXT_PUBLIC_APP_URL are both deprecated. Both are replaced with one variable, NEXT_PUBLIC_WEBAPP_URL +# BASE_URL=http://localhost:3000 +# NEXT_PUBLIC_APP_URL=http://localhost:3000 + +NEXT_PUBLIC_WEBAPP_URL=http://localhost:3000 + +# It is highly recommended that the NEXTAUTH_SECRET must be overridden and very unique +# Use `openssl rand -base64 32` to generate a key +NEXTAUTH_SECRET=secret + +# Deprecation note: JWT_SECRET is no longer used +# JWT_SECRET=secret POSTGRES_USER=unicorn_user POSTGRES_PASSWORD=magical_password @@ -42,7 +52,4 @@ EMAIL_SERVER_PASSWORD=email_password # Encryption key that will be used to encrypt CalDAV credentials, choose a random string, for example with `dd if=/dev/urandom bs=1K count=1 | md5sum` CALENDSO_ENCRYPTION_KEY= -# It is highly recommended that the JWT secret must be overridden and very unique -JWT_SECRET=secret - NODE_ENV=production diff --git a/.github/workflows/docker-build-push-dockerhub.yml b/.github/workflows/docker-build-push-dockerhub.yml index 8b2b451..92e6310 100644 --- a/.github/workflows/docker-build-push-dockerhub.yml +++ b/.github/workflows/docker-build-push-dockerhub.yml @@ -33,9 +33,12 @@ jobs: # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v2 - with: - submodules: true + - name: checkout + uses: actions/checkout@v2 + + - name: Git submodule update + run: | + git submodule update --init - name: Docker Login # You may pin to the exact commit or the version. diff --git a/.gitmodules b/.gitmodules index fa4de21..d2e4d9a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ -[submodule "calendso"] - path = calendso +[submodule "calcom"] + path = calcom url = https://github.com/calcom/cal.com.git branch = main diff --git a/Dockerfile b/Dockerfile index 2c63469..9647923 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,40 +3,40 @@ FROM node:14 as deps WORKDIR /calcom # Copy rootand all workspace package.json files -COPY calendso/package.json calendso/yarn.lock calendso/turbo.json ./ -COPY calendso/apps/web/package.json calendso/apps/web/yarn.lock ./apps/web/ -COPY calendso/packages/ui/package.json ./packages/ui/package.json -COPY calendso/packages/types/package.json ./packages/types/package.json -COPY calendso/packages/core/package.json ./packages/core/package.json -COPY calendso/packages/config/package.json ./packages/config/package.json -COPY calendso/packages/ee/package.json ./packages/ee/package.json -COPY calendso/packages/tsconfig/package.json ./packages/tsconfig/package.json -COPY calendso/packages/prisma/package.json ./packages/prisma/package.json -COPY calendso/packages/app-store/googlevideo/package.json ./packages/app-store/googlevideo/package.json -COPY calendso/packages/app-store/caldavcalendar/package.json ./packages/app-store/caldavcalendar/package.json -COPY calendso/packages/app-store/zoomvideo/package.json ./packages/app-store/zoomvideo/package.json -COPY calendso/packages/app-store/huddle01video/package.json ./packages/app-store/huddle01video/package.json -COPY calendso/packages/app-store/jitsivideo/package.json ./packages/app-store/jitsivideo/package.json -COPY calendso/packages/app-store/stripepayment/package.json ./packages/app-store/stripepayment/package.json -COPY calendso/packages/app-store/office365video/package.json ./packages/app-store/office365video/package.json -COPY calendso/packages/app-store/office365calendar/package.json ./packages/app-store/office365calendar/package.json -COPY calendso/packages/app-store/slackmessaging/package.json ./packages/app-store/slackmessaging/package.json -COPY calendso/packages/app-store/tandemvideo/package.json ./packages/app-store/tandemvideo/package.json -COPY calendso/packages/app-store/wipemycalother/package.json ./packages/app-store/wipemycalother/package.json -COPY calendso/packages/app-store/package.json ./packages/app-store/package.json -COPY calendso/packages/app-store/_example/package.json ./packages/app-store/_example/package.json -COPY calendso/packages/app-store/googlecalendar/package.json ./packages/app-store/googlecalendar/package.json -COPY calendso/packages/app-store/dailyvideo/package.json ./packages/app-store/dailyvideo/package.json -COPY calendso/packages/app-store/applecalendar/package.json ./packages/app-store/applecalendar/package.json -COPY calendso/packages/app-store/hubspotothercalendar/package.json ./packages/app-store/hubspotothercalendar/package.json -COPY calendso/packages/lib/package.json ./packages/lib/package.json -COPY calendso/packages/embeds/embed-snippet/package.json ./packages/embeds/embed-snippet/package.json -COPY calendso/packages/embeds/embed-react/package.json ./packages/embeds/embed-react/package.json -COPY calendso/packages/embeds/embed-core/package.json ./packages/embeds/embed-core/package.json -COPY calendso/packages/stripe/package.json ./packages/stripe/package.json +COPY calcom/package.json calcom/yarn.lock calcom/turbo.json ./ +COPY calcom/apps/web/package.json calcom/apps/web/yarn.lock ./apps/web/ +COPY calcom/packages/ui/package.json ./packages/ui/package.json +COPY calcom/packages/types/package.json ./packages/types/package.json +COPY calcom/packages/core/package.json ./packages/core/package.json +COPY calcom/packages/config/package.json ./packages/config/package.json +COPY calcom/packages/ee/package.json ./packages/ee/package.json +COPY calcom/packages/tsconfig/package.json ./packages/tsconfig/package.json +COPY calcom/packages/prisma/package.json ./packages/prisma/package.json +COPY calcom/packages/app-store/googlevideo/package.json ./packages/app-store/googlevideo/package.json +COPY calcom/packages/app-store/caldavcalendar/package.json ./packages/app-store/caldavcalendar/package.json +COPY calcom/packages/app-store/zoomvideo/package.json ./packages/app-store/zoomvideo/package.json +COPY calcom/packages/app-store/huddle01video/package.json ./packages/app-store/huddle01video/package.json +COPY calcom/packages/app-store/jitsivideo/package.json ./packages/app-store/jitsivideo/package.json +COPY calcom/packages/app-store/stripepayment/package.json ./packages/app-store/stripepayment/package.json +COPY calcom/packages/app-store/office365video/package.json ./packages/app-store/office365video/package.json +COPY calcom/packages/app-store/office365calendar/package.json ./packages/app-store/office365calendar/package.json +COPY calcom/packages/app-store/slackmessaging/package.json ./packages/app-store/slackmessaging/package.json +COPY calcom/packages/app-store/tandemvideo/package.json ./packages/app-store/tandemvideo/package.json +COPY calcom/packages/app-store/wipemycalother/package.json ./packages/app-store/wipemycalother/package.json +COPY calcom/packages/app-store/package.json ./packages/app-store/package.json +COPY calcom/packages/app-store/_example/package.json ./packages/app-store/_example/package.json +COPY calcom/packages/app-store/googlecalendar/package.json ./packages/app-store/googlecalendar/package.json +COPY calcom/packages/app-store/dailyvideo/package.json ./packages/app-store/dailyvideo/package.json +COPY calcom/packages/app-store/applecalendar/package.json ./packages/app-store/applecalendar/package.json +COPY calcom/packages/app-store/hubspotothercalendar/package.json ./packages/app-store/hubspotothercalendar/package.json +COPY calcom/packages/lib/package.json ./packages/lib/package.json +COPY calcom/packages/embeds/embed-snippet/package.json ./packages/embeds/embed-snippet/package.json +COPY calcom/packages/embeds/embed-react/package.json ./packages/embeds/embed-react/package.json +COPY calcom/packages/embeds/embed-core/package.json ./packages/embeds/embed-core/package.json +COPY calcom/packages/stripe/package.json ./packages/stripe/package.json # Prisma schema is required by a post-install script -COPY calendso/packages/prisma/schema.prisma ./packages/prisma/schema.prisma +COPY calcom/packages/prisma/schema.prisma ./packages/prisma/schema.prisma # Install dependencies RUN yarn install --frozen-lockfile @@ -44,20 +44,24 @@ RUN yarn install --frozen-lockfile FROM node:14 as builder WORKDIR /calcom -ARG BASE_URL -ARG NEXT_PUBLIC_APP_URL +ARG NEXT_PUBLIC_WEBAPP_URL ARG NEXT_PUBLIC_LICENSE_CONSENT ARG NEXT_PUBLIC_TELEMETRY_KEY -ENV BASE_URL=$BASE_URL \ +# DEPRECATED +ARG BASE_URL +ARG NEXT_PUBLIC_APP_URL + +ENV NEXT_PUBLIC_WEBAPP_URL=$NEXT_PUBLIC_WEBAPP_URL \ + BASE_URL=$BASE_URL \ NEXT_PUBLIC_APP_URL=$NEXT_PUBLIC_APP_URL \ NEXT_PUBLIC_LICENSE_CONSENT=$NEXT_PUBLIC_LICENSE_CONSENT \ NEXT_PUBLIC_TELEMETRY_KEY=$NEXT_PUBLIC_TELEMETRY_KEY -COPY calendso/package.json calendso/yarn.lock calendso/turbo.json ./ -COPY calendso/apps/web ./apps/web -COPY calendso/packages ./packages +COPY calcom/package.json calcom/yarn.lock calcom/turbo.json ./ +COPY calcom/apps/web ./apps/web +COPY calcom/packages ./packages COPY --from=deps /calcom/node_modules ./node_modules -RUN yarn build && yarn install --ignore-scripts --prefer-offline +RUN yarn build FROM node:14 as runner WORKDIR /calcom @@ -67,16 +71,17 @@ RUN apt-get update && \ rm -rf /var/lib/apt/lists/* && \ npm install --global prisma -COPY calendso/package.json calendso/yarn.lock calendso/turbo.json ./ -COPY --from=builder /calcom/node_modules ./node_modules +COPY calcom/package.json calcom/yarn.lock calcom/turbo.json ./ +COPY --from=deps /calcom/node_modules ./node_modules COPY --from=builder /calcom/packages ./packages -COPY --from=builder /calcom/apps/web/node_modules ./apps/web/node_modules +COPY --from=deps /calcom/apps/web/node_modules ./apps/web/node_modules COPY --from=builder /calcom/apps/web/scripts ./apps/web/scripts COPY --from=builder /calcom/apps/web/next.config.js ./apps/web/next.config.js COPY --from=builder /calcom/apps/web/next-i18next.config.js ./apps/web/next-i18next.config.js COPY --from=builder /calcom/apps/web/public ./apps/web/public COPY --from=builder /calcom/apps/web/.next ./apps/web/.next COPY --from=builder /calcom/apps/web/package.json ./apps/web/package.json +COPY --from=builder calcom/packages/prisma/schema.prisma ./prisma/schema.prisma COPY scripts scripts EXPOSE 3000 diff --git a/README.md b/README.md index 31ceb78..c4ef2ec 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,24 @@
- + Logo
Website ยท - Community Support + Community Support
# Docker +NOTE: DockerHub organization has not yet been renamed. + This image can be found on DockerHub at [https://hub.docker.com/r/calendso/calendso](https://hub.docker.com/r/calendso/calendso) -The Docker configuration for Calendso is an effort powered by people within the community. Cal.com, Inc. does not provide official support for Docker, but we will accept fixes and documentation. Use at your own risk. +The Docker configuration for Cal.com is an effort powered by people within the community. Cal.com, Inc. does not yet provide official support for Docker, but we will accept fixes and documentation at this time. Use at your own risk. ## Important Notes -This Docker Image is managed by the Calendso Community. Support for this image can be found via the repository, located at [https://github.com/calendso/docker](https://github.com/calcom/docker) +This Docker Image is managed by the Cal.com Community. Support for this image can be found via the repository, located at [https://github.com/calcom/docker](https://github.com/calcom/docker) Currently, this image is intended for local development/evaluation use only, as there are specific requirements for providing environmental variables at build-time in order to specify a non-localhost BASE_URL. (this is due to the nature of the static site compilation, which embeds the variable values). The ability to update these variables at runtime is in-progress and will be available in the future. @@ -24,61 +26,69 @@ For Production, for the time being, please checkout the repository and build/pus ## Requirements -Make sure you have `docker` & `docker-compose` installed on the server / system. +Make sure you have `docker` & `docker compose` installed on the server / system. + +Note: `docker compose` without the hyphen is now the primary method of using docker-compose, per the Docker documentation. ## Getting Started -1. Clone calendso-docker +1. Clone calcom-docker ```bash - git clone --recursive https://github.com/calendso/docker.git calendso-docker + git clone --recursive https://github.com/calcom/docker.git calcom-docker ``` 2. Change into the directory ```bash - cd calendso-docker + cd calcom-docker ``` -3. Rename `.env.example` to `.env` and update `.env` if needed. - -4. Build and start calendso +3. Update the calcom submodule ```bash - docker-compose up --build + git submodule update --remote --init ``` -5. Start prisma studio +4. Rename `.env.example` to `.env` and then update `.env` + +5. Build and start Cal.com via docker compose ```bash - docker-compose exec calendso npx prisma studio + docker compose up --build ``` -6. Open a browser to [http://localhost:5555](http://localhost:5555) to look at or modify the database content. +6. (First Run) Open a browser to [http://localhost:5555](http://localhost:5555) to look at or modify the database content. -7. Click on the `User` model to add a new user record. + a. Click on the `User` model to add a new user record. -8. Fill out the fields (remembering to encrypt your password with [BCrypt](https://bcrypt-generator.com/)) and click `Save 1 Record` to create your first user. + b. Fill out the fields (remembering to encrypt your password with [BCrypt](https://bcrypt-generator.com/)) and click `Save 1 Record` to create your first user. -9. Open a browser to [http://localhost:3000](http://localhost:3000) and login with your just created, first user. +7. Open a browser to [http://localhost:3000](http://localhost:3000) and login with your just created, first user. + +## Configuration + +### Build-time variables + +These variables must be provided at the time of the docker build, and can be provided by updating the .env file. Changing these is not required for evaluation, but may be required for running in production. Currently, if you require changes to these variables, you must follow the instructions to build and publish your own image. + +* NEXT_PUBLIC_WEBAPP_URL +* NEXT_PUBLIC_LICENSE_CONSENT +* NEXT_PUBLIC_TELEMETRY_KEY + +### Important Run-time variables + +* NEXTAUTH_SECRET ## Git Submodules This repository uses a git submodule. -If you cloned the repository without using `--recursive`, then you can initialize and clone the submodule with the following steps. +To update the calcom submodule, use the following command: -1. Init the submodule - - ```bash - git submodule init - ``` - -2. Update the submodule - - ```bash - git submodule update --remote - ``` +```bash +git submodule update --remote --init +``` For more advanced usage, please refer to the git documentation: [https://git-scm.com/book/en/v2/Git-Tools-Submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules) diff --git a/calcom b/calcom new file mode 160000 index 0000000..a005791 --- /dev/null +++ b/calcom @@ -0,0 +1 @@ +Subproject commit a0057911c1e2b7753e98b80bce7157764ee39a29 diff --git a/calendso b/calendso deleted file mode 160000 index c22b6ca..0000000 --- a/calendso +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c22b6ca6703cb3b300ccff57c55b6c744ac3e49d diff --git a/docker-compose.yaml b/docker-compose.yaml index 27d9421..e4a6a7d 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -18,13 +18,12 @@ services: networks: - stack - calendso: + calcom: build: context: . dockerfile: Dockerfile args: - - BASE_URL=${BASE_URL} - - NEXT_PUBLIC_APP_URL=${NEXT_PUBLIC_APP_URL} + - NEXT_PUBLIC_WEBAPP_URL=${NEXT_PUBLIC_WEBAPP_URL} - NEXT_PUBLIC_LICENSE_CONSENT=${NEXT_PUBLIC_LICENSE_CONSENT} - NEXT_PUBLIC_TELEMETRY_KEY=${NEXT_PUBLIC_TELEMETRY_KEY} restart: always diff --git a/scripts/start.sh b/scripts/start.sh index 822d1c0..ca739de 100755 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -1,6 +1,6 @@ #!/bin/sh set -x -/calcom/scripts/wait-for-it.sh ${DATABASE_HOST} -- echo "database is up" +scripts/wait-for-it.sh ${DATABASE_HOST} -- echo "database is up" npx prisma migrate deploy --schema /calcom/packages/prisma/schema.prisma yarn start