மூலத்திலிருந்து உருவாக்குதல்

இந்தப் பக்கம் Antimatter-ஐ அதன் மூலக் குறியீட்டிலிருந்து எவ்வாறு உருவாக்கி இயக்க வேண்டும் என்பதை விளக்குகிறது; அதில் வேலை செய்ய அல்லது உங்கள் சொந்த உருவாக்கங்களைச் செய்ய. இது சர்வரும் வலை இடைமுகங்களையும் உள்ளடக்கியது; அவை ஒரே repozitory-யில் உள்ளன. பின்னர் Docker இமேஜ் மற்றும் ஆப்ஸ்களைக் கவனிக்கிறது.

உங்களுக்குத் தேவையானவை

  • Go, server/go.mod-ல் உள்ள பதிப்பில் (எழுதும் நேரத்தில் 1.26.7).
  • Node.js மற்றும் npm, .nvmrc மற்றும் webapp/package.json-ல் உள்ள பதிப்புகளில் (Node 24.11.1, npm 11.6.2 உடன்). mise மூலம், repozitory-யின் mise.toml சரியான Node-ஐ நிறுவும்.
  • Docker Compose உடன்: வளர்ச்சி அமைப்பு PostgreSQL மற்றும் சில பிற சேவைகளை கண்டெய்னர்களில் இயக்குகிறது.
  • make, git, மற்றும் Linux அல்லது macOS மெஷின்.
  • நினைவகம்: வலை இடைமுகங்களை உருவாக்குவது மிகவும் கடினமான பகுதி. 16 GB RAM-க்கு திட்டமிடுங்கள்; உருவாக்கங்கள் மற்றும் நினைவகம் பார்க்கவும்.
git clone https://github.com/AntimatterChat/antimatter.git
cd antimatter

Repozitory சர்வரை server/-ல், வலை இடைமுகங்களை webapp/-ல் (Fusion webapp/fusion-ல், கிளாசிக் webapp/channels-ல், பகிரப்பட்ட பாக்கேஜ்கள் webapp/platform-ல்), மற்றும் end-to-end சோதனைகளை e2e-tests/-ல் கொண்டுள்ளது.

ஒரு வளர்ச்சி சர்வரை இயக்குங்கள்

cd server
make run

make run வளர்ச்சி கண்டெய்னர்களை (PostgreSQL, Redis, மெய்ல் கட்சர் மற்றும் மானிட்டரிங் கருவிகள்) தொடங்குகிறது, வலை ஆப் உருவாக்கங்களை இடத்தில் இணைக்கிறது, go run மூலம் சர்வரை பின்னணியில் இயக்குகிறது, மேலும் வலை ஆப்பின் வாட்சரை இயக்குகிறது; அது நீங்கள் திருத்தும்போது கிளாசிக் இடைமுகத்தை மறுஉருவாக்குகிறது. http://localhost:8065-ஐ திறந்து ஒரு கணக்கை உருவாக்குங்கள்: முதல் கணக்கு சிஸ்டம் நிர்வாகியாக மாறும்.

கட்டளை (server/-ல்)இது என்ன செய்கிறது
make run-server, make run-clientசர்வரை மட்டும் அல்லது வலை ஆப் வாட்சரை மட்டும் இயக்குங்கள்.
make restart-serverGo குறியீட்டை மாற்றிய பிறகு சர்வரை மறுதொடங்குங்கள்.
make stopசர்வரை, வாட்சரை மற்றும் கண்டெய்னர்களை நிறுத்துங்கள்.
make debug-serverDelve டிப்யூகரின் கீழ் சர்வரை இயக்குங்கள்.
make run-cli ARGS="-version"ஒரு சர்வர் கட்டளையை இயக்குங்கள்.
make config-resetconfig/config.json-ஐ இயல்புநிலைக்கு மீட்டமைக்கவும்.
make clean, make nukeஉருவாக்க கோப்புகளை அழிக்கவும்; nuke வளர்ச்சி தரவுகளையும் அழிக்கும்.

வளர்ச்சி தரவுத்தளம் postgres://mmuser:mostest_password@localhost/mattermost_test, சர்வரின் இயல்புநிலை தரவு மூலம். ENABLED_DOCKER_SERVICES மூலம் எந்த கண்டெய்னர்கள் தொடங்க வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும், server/config.override.mk கோப்பில் அல்லது உங்கள் environment-ல் (server/config.mk பார்க்கவும்).

வலை இடைமுகங்கள்

webapp/ இல்:

npm install      # also builds the shared packages
npm run build    # the classic interface, then Fusion

கட்டமைப்புகள் webapp/channels/dist (கிளாசிக்) மற்றும் webapp/fusion/dist (Fusion) இல் சேமிக்கப்படுகின்றன. server/ இல் make client இயக்கினால், அவை server/client மற்றும் server/client-fusion ஆக இணைக்கப்பட்டு, சர்வர் அவற்றை வழங்குகிறது: கிளாசிக் /static/ கீழ், Fusion /static/fusion/ கீழ்.

  • npm run run (அல்லது webapp/ இல் make run) கிளாசிக் இடைமுகத்தை கண்காணித்து மறுகட்டமைக்கிறது. Fusion-ஐயும் மறுகட்டமைக்க WATCH_FUSION=true சேர்க்கவும்.
  • npm run dev-server (make dev) webpack இன் வளர்ச்சி சர்வரைப் பதிலாக இயக்குகிறது: கிளாசிக் 9005 போர்டில், Fusion 9006 போர்டில்.
  • பிரவுசரில் ஒரு இடைமுகத்தை அல்லது மற்றொன்றைப் பார்க்க, எந்தப் பக்கத்தின் முகவரியிலும் ?webui=fusion அல்லது ?webui=classic சேர்க்கவும்.

பரிசோதனைகள் மற்றும் சரிபார்ப்புகள்

கட்டளைஇடம்இது என்ன செய்கிறது
make test-serverserver/வளர்ச்சி கண்டெய்னர்களுக்கு எதிரான சர்வரின் பரிசோதனைத் தொகுப்பு. இது நீண்ட நேரம் எடுக்கும்.
make test-server-quickserver/குறுகிய பரிசோதனைகள் மட்டுமே.
go test ./channels/app/... -run TestNameserver/ஒரு தொகுப்பு அல்லது பரிசோதனை, கண்டெய்னர்கள் இயங்கும் நிலையில் (make start-docker).
make check-styleserver/go vet, golangci-lint மற்றும் மற்ற Go சரிபார்ப்புகள்.
make testwebapp/வெப் ஆப் இன் அலகு பரிசோதனைகள் (Jest), ஒவ்வொரு தொகுப்பிலும்.
npm run test -- <pattern>webapp/fusionFusion இன் சில பரிசோதனைகள்.
make check-style, make check-typeswebapp/ESLint மற்றும் TypeScript.
make i18n-extractserver/ மற்றும் webapp/நீங்கள் சரங்களைச் சேர்த்ததும் அல்லது மாற்றியதும், ஆங்கில சரக் கோப்புகளைப் புதுப்பிக்கிறது (மொழிபெயர்ப்புகள் காண்க).

server/ இல் go mod tidy ஐப் பதிலாக make modules-tidy ஐ இயக்கவும்.

வெளியீட்டு ஆர்கைவ்கள்

cd webapp && npm run build && cd ..
cd server
make build-linux       # the antimatter and amctl binaries
make package-linux     # dist/antimatter-linux-amd64.tar.gz and -arm64

make build வெப் இடைமுகங்களை மற்றும் லினக்ஸ் பைனரிகளை ஒரே நேரத்தில் கட்டமைக்கிறது. ஆர்கைவில் bin/antimatter, bin/amctl, அமைப்புகளை மாற்றுவது பற்றிய README.md உடன் ஒரு இயல்புநிலை config/config.json, இரண்டு வெப் இடைமுகங்கள், டெம்பிளேட்டுகள், எழுத்துருக்கள் மற்றும் மொழிபெயர்ப்புகள் உள்ளன. மற்ற தளங்கள்: make package-osx, make package-windows, make package-freebsd.

உள்ளடக்கப்பட்ட செயலிகள்

எளிய make package-linux ஆப்ஸ்களின்றி ஒரு ஆர்கைவைக் கட்டமைக்கிறது. வெளியிடப்பட்ட வெளியீடுகள் போல அவற்றைத் தொகுக்க, முதலில் கையொப்பமிட்ட ஆப் தொகுப்புகளைப் பெற்று, அவற்றின் கோப்புறையை வழங்கவும்:

build/package/fetch-apps.sh "$HOME/release-apps"   # needs gh, python3 and gpg
make package-linux PREPACKAGED_PLUGINS_DIR="$HOME/release-apps"

fetch-apps.sh என்பது antimatter-docker-இன் plugins.json கோப்பில் பட்டியலிடப்பட்ட ஒவ்வொரு செயலிக்கும், அதன் கையொப்பத்துடன், GitHub-இல் வெளியிடப்பட்ட சமீபத்திய வெளியீட்டை பதிவிறக்கி, Antimatter-இன் plugin key-உடன் அதை சரிபார்த்து உறுதி செய்கிறது. இயல்பாக இது Whiteboard, குரல் சேனல்கள், அழைப்புகள், ஏஜென்கள், To-do, கருத்துக் கணிப்புகள், குறிப்புகள், GIF-கள் மற்றும் மீம்களைப் பெறுகிறது; AM_BUNDLED_APPS (வெளியீட்டுப் பெயர்கள், இடவெளியால் பிரிக்கப்பட்டவை) இந்தப் பட்டியலை மாற்றுகிறது. வெளியீடு இல்லாத அல்லது கையொப்பம் இல்லாத செயலிகள் எச்சரிக்கையுடன் தவிர்க்கப்படும். தொகுப்புகள் (bundles) அரக்கீவின் prepackaged_plugins/ கோப்பகத்தில் சேமிக்கப்படுகின்றன.

.deb மற்றும் .rpm தொகுப்புகள்

build/package/build-packages.sh <archive> <amd64|arm64> <version> <out-dir> என்பது ஒரு வெளியீட்டு அரக்கீவ் (release archive) ஐ nfpm மூலம், அனைத்தையும் ஒருங்கிணைந்த .deb மற்றும் .rpm தொகுப்புகளாக மாற்றுகிறது. நிர்வாகிகளின் வழிகாட்டியில் அவை என்னவற்றை நிறுவும் என்பது விவரிக்கப்பட்டுள்ளது: .deb அல்லது .rpm தொகுப்பை நிறுவு என்பதைப் பார்க்கவும்.

வெளியீட்டு செயல்முறை (Release workflow)

சர்வர் சேமிப்பு (repository)-இன் antimatter-release.yml செயல்முறை (workflow) இதை அனைத்தையும் GitHub-இல் செய்கிறது: v* tag-இல் amd64 மற்றும் arm64 ஆகியவற்றுக்கான அரக்கீவ்கள் மற்றும் தொகுப்புகளை SHA256SUMS உடன் உருவாக்கி, அவற்றை அந்த tag-இன் GitHub வெளியீடாக (version-இல் - இருந்தால் prerelease) வெளியிடுகிறது. கைமுறையாக இயக்கப்பட்டால், அது build-ஐ 0.9.0-dev.<run> என எண்ணிடும் (numbers) மற்றும் கோப்புகளை workflow artifacts ஆக வைத்திருக்கும். ஒவ்வொரு செயலி சேமிப்பும் (app repository) அதன் கையொப்பம் பெற்ற தொகுப்பை (signed bundle) அதே முறையில் வெளியிடும் release.yml செயல்முறையைக் கொண்டுள்ளது.

Docker இமேஜ்

antimatter-docker சேமிப்பு (repository) வெளியிடப்பட்ட இமேஜ்களை, அதாவது அதன் செயலிகளுடன் சேர்ந்த சர்வரை, முழுமையாக Docker-இன் உள்ளே உருவாக்குகிறது:

git clone https://github.com/AntimatterChat/antimatter-docker.git
cd antimatter-docker
scripts/build-all.sh                     # from the main branches on GitHub
SOURCES=local scripts/build-all.sh       # from your checkouts next to this folder
VARIANT=next scripts/build-all.sh        # the "next" image, with every Antimatter app

இதற்கு buildx உடன் Docker, Python 3, git மற்றும் gpg, சுமார் 16 GB RAM மற்றும் 30 GB டிஸ்க் தேவை. முடிவு ghcr.io/antimatterchat/antimatter:dev என ஏற்றப்படுகிறது; ANTIMATTER_IMAGE=ghcr.io/antimatterchat/antimatter:dev docker compose -f compose.local.yml up -d மூலம் அதை முயற்சி செய்யலாம். plugins.json செயலிகளையும் உருவாக்கப்பட்ட பதிப்புகளையும் பட்டியலிடுகிறது, மேலும் சேமிப்பின் (repository) README விளக்கம் மாறுபாடுகளை (variants) விளக்குகிறது.

build-all.sh Antimatter சைனிங் கீயால் பட்டியில் சேர்க்கப்பட்ட செயல்களை சைன் செய்கிறது, மேலும் இமேஜ் பிளட் அசைன் சைன் செய்யப்படாத செயல்களை நிராகரிக்கிறது. நிரவாகிகளிடம் மட்டுமே உள்ள அந்த தனியார் கீ இல்லாமல், முதல் படிகளை மட்டும் தனித்தனியாக இயக்குங்கள்: scripts/fetch-sources.sh, scripts/build-plugins.sh (out/plugins/ இல் செயல் பட்டிகள்) மற்றும் scripts/build-server.sh (out/server/ இல் சர்வர் ஆர்கைவ்கள்).

பிளட் மற்றும் நினைவகம்

வெப் இன்டர்ஃபேஸ்கள் பெரிய webpack பிள்ட்கள்; நினைவகம் தீர்ந்து போவதே மிகவும் பொதுவான பிளட் தோல்வி.

  • npm run build கிளாசிக் இன்டர்ஃபேஸை முதலில், பின்னர் Fusion-ஐ தனித்தனியாக பிளட் செய்கிறது; சேர்ப்பு பீக்-ஐ குறைக்க இது அவசியம். இவற்றை நீங்களே இணை (parallel) இயக்க வேண்டாம்.
  • மினிஃபையர் (minifier) ஒவ்வொரு புரோசஸருக்கும் ஒரு வேர்கரை (worker) தொடங்குகிறது. அதிக கோர்கள், குறைந்த நினைவகம் கொண்ட மெஷினில், பிளட் பார்க்கும் புரோசஸர்களைக் கட்டுப்படுத்தவும்: taskset -c 0-5 npm run build.
  • Node-க்கு ஹீப் (heap) நினைவகம் தீர்ந்தால், அதன் எல்லை (limit) ஐ உயர்த்தவும்: NODE_OPTIONS=--max-old-space-size=6144. Docker பிளட் இந்த மதிப்பை பயன்படுத்துகிறது (build.env இல் BUILD_NODE_OPTIONS).
  • சிறிய மெஷினில் சர்வரின் முழு டெஸ்ட் சூட், ஒரு வெப் பிளட் மற்றும் ஒரு Docker பிளட் ஆகியவற்றை ஒரே நேரத்தில் இயக்குவதைத் தவிர்க்கவும்.

பிரயோகங்கள்

ஒவ்வொரு செயலுக்கும் (பிளகினுக்கு) தனி ரிபொசிட்டரி மற்றும் Makefile உள்ளது; make dist அதன் பட்டியை (bundle) பிளட் செய்கிறது. பிளட், நிறுவல் மற்றும் டிபகிங் பகுதியைப் பார்க்கவும்.

டெஸ்க்டாப் செயல்

டெஸ்க்டாப் செயல் ஒரு Electron செயல். Node.js 24 அல்லது அதற்குப் பின்னான பதிப்புகளுடன்:

npm install --allow-git=all
npm run build          # development build, into dist/
npm start              # run it
npm run package:linux  # packages into release/ (also package:windows, package:mac)

பிளட் நேர அமைப்புகள் (எ.கா., முன்னரே அமைக்க வேண்டிய சர்வர்கள்) src/common/config/buildConfig.ts இல் உள்ளன. Apple சான்றிதழ் இல்லாமல், macOS செயலை நோட்டரிசேஷன் (notarisation) இல்லாமல் ad hoc சைன் செய்ய AM_MAC_ADHOC_SIGN=true ஐ அமைக்கவும்: Apple silicon Macs சைன் செய்யப்படாத கோடினை நிராகரிக்கின்றன. ரிபொசிட்டரியின் release.yml வொர்க்ஃபு, v* டேக்-இல் Linux, Windows மற்றும் macOS-க்கான சைன் செய்யப்படாத பாக்கேஜ்களை பிளட் செய்கிறது.

மொபைல் செயல்

மொபைல் செயலி React Native செயலியாகும்; அதன் README-ல் கட்டளைகள் (npm run ios, npm run android) பட்டியலிடப்பட்டுள்ளன. உங்கள் சொந்த நகலை உருவாக்க, உங்கள் சொந்த கையொப்ப விசைகள், Android அறிவிப்புகளுக்கான Firebase திட்டம், iOS-க்கான APNs விசை, மற்றும் அந்த அங்கீகாரங்களை வைத்திருக்கும் push proxy ஆகியனவும் தேவை. சேமிப்பகத்தின் release.yml செயல்முறை, v* குறியீட்டில் Android APK மற்றும் AAB, மேலும் கையொப்பமிடப்படாத iOS .ipa ஆகியவற்றை உருவாக்குகிறது; கடை கணக்குகள் இல்லாமல். அதன் README-ல் Android கட்டமைப்பை கையொப்பமிடவும் Firebase-ஐ அமைக்கவும் தேவையான ரகசியங்கள் பட்டியலிடப்பட்டுள்ளன.