Domaine personnalisé pour les pages de projet GitHub

436

J'ai une gh-pagessuccursale dans l'un de mes dépôts http://github.com . Les pages du projet GitHub fonctionnent bien si je vais sur http://myuser.github.com/myrepo

Je veux configurer un domaine personnalisé (monexemple.com) qui servira à ces pages de projet. Je veux les deux myexample.com et www.myexample.comservir ces pages de projet.

L'aide des pages GitHub indique de créer un enregistrement A et un enregistrement CNAME dans votre DNS. L'enregistrement A est logique, mais je ne sais pas quel enregistrement CNAME faire dans mon DNS.

Les gh-pagesdocs disent de faire un CNAMEenregistrement pour 'charlie.github.com' qui est un référentiel de page utilisateur. Je n'ai pas de référentiel de page utilisateur - je n'ai qu'un référentiel de projet et une gh-pagesbranche que je souhaite utiliser pour myexample.comet www.myexample.com.

Dois-je créer un référentiel de pages utilisateur pour pouvoir utiliser ma page de projet pour www.myexample.com et myexample.com?

Je voudrais juste l'essayer, mais je veux m'assurer que cela fonctionnera car j'ai déjà www.myexample.com en direct et je ne veux pas faire d'erreur.

J'ai envoyé un e-mail au support GitHub et leur réponse a été

Pour autant que je sache, les deux pages ne peuvent pas pointer vers les mêmes pages gh.

J'ai du mal à croire qu'ils ne prendraient en charge que les enregistrements A pour les pages de projet.

Quelqu'un a-t-il déjà réussi cela?

rynop
la source
10
J'ai mis en place lacewing-project.org avec juste un enregistrement A pointant vers 207.97.227.245 (aucun enregistrement CNAME), et cela fonctionne très bien. J'ai également mis un fichier appelé CNAME à la racine de la branche gh-pages contenant le nom de domaine.
James McLaughlin
Dans mon cas, le simple fait de placer le fichier CNAME dans la branche gh-pages a fait l'affaire, merci!
jarandaf

Réponses:

522

MISE À JOUR DU 23/01/19:

Les choses ont un peu changé (pour le mieux) depuis ma dernière réponse. Cette réponse mise à jour vous montrera comment configurer:

  1. Apex racine (example.com)
  2. Sous-domaine (www.example.com)
  3. HTTPS (facultatif mais fortement encouragé)

Au final, toutes les demandes example.comseront redirigées vers https://www.example.com (ou http: // si vous choisissez de NE PAS utiliser HTTPS). J'utilise toujours wwwcomme atterrissage final. Pourquoi ( 1 , 2 ), est pour une autre discussion.

Cette réponse est longue mais n'est pas compliquée. J'étais bavard pour plus de clarté car les documents GitHub sur ce sujet ne sont pas clairs ou linéaires.

Étape 1: activer les pages GitHub dans les paramètres GitHub

  1. Depuis votre repo, cliquez sur l' onglet
  2. Faites défiler jusqu'à la GitHub Pagessection. Vous avez deux options:
  3. Choisir master branchsera traité /README.mdcomme votre site Web index.html. Choisir master branch /docs foldersera traité /docs/README.mdcomme votre site Web index.html.
  4. Choisissez un thème.
  5. Attendez une minute pendant que GitHub publie votre site. Vérifiez que cela fonctionne en cliquant sur le lien à côté deYour site is ready to be published at

Étape 2: spécifier un domaine personnalisé dans les paramètres GitHub

Saisissez votre nom de domaine personnalisé ici et cliquez sur save:

Il s'agit d'une étape subtile mais importante.

  • Si le domaine personnalisé que vous avez ajouté à votre site GitHub Pages est example.com, alors www.example.comredirigera versexample.com
  • Si le domaine personnalisé que vous avez ajouté à votre site GitHub Pages est www.example.com, example.comsera redirigé vers www.example.com.

Comme mentionné précédemment, je recommande de toujours atterrir à wwwdonc je suis entré www.example.comcomme illustré ci-dessus.

Étape 3: créer des entrées DNS

Dans la console Web de votre fournisseur DNS, créez quatre Aenregistrements et un CNAME.

  1. AEnregistrements pour @(aka racine apex):

Certains fournisseurs DNS vous demanderont de spécifier @, d'autres (comme AWS Route 53) vous laisserez le sous-domaine vide pour indiquer @. Dans les deux cas, ce sont les Aenregistrements à créer:

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
  1. Créez un CNAMEenregistrement vers lequel pointez www.example.com YOUR-GITHUB-USERNAME.github.io.

C'est la partie la plus déroutante.

Notez le YOUR-GITHUB-USERNAME NOT le nom du dépôt GitHub! La valeur de YOUR-GITHUB-USERNAMEest déterminée par ce graphique .

Pour un site de pages utilisateur (probablement ce que vous êtes), l' CNAMEentrée sera username.github.io, par exemple:

Pour un site de pages Organisation , l' CNAMEentrée sera orgname.github.io, par exemple:

Étape 5: confirmer les entrées DNS

  1. Confirmez vos Aenregistrements en exécutant dig +noall +answer example.com. Il doit renvoyer les quatre 185.x.x.xadresses IP que vous avez saisies.

  2. Confirme votre CNAMEdossier en exécutant dig www.example.com +nostats +nocomments +nocmd. Il doit renvoyer unCNAME YOUR-GITHUB-USERNAME.github.io

La résolution / propagation de ces entrées DNS peut prendre environ une heure. Une fois qu'ils l'ont fait, ouvrez votre navigateur http://example.comet il devrait rediriger vershttp://www.example.com

Étape 6: Configuration SSL (HTTPS). Facultatif, mais fortement recommandé

Une fois que le domaine personnalisé fonctionne, revenez aux paramètres de dépôt. Si la page des paramètres est déjà ouverte, actualisez la page en dur.

S'il y a un message sous la Enforce HTTPScase à cocher, indiquant qu'il est toujours en cours de traitement, vous devrez attendre. Vous devrez peut-être également saveappuyer sur le bouton dans la Custom domainsection pour lancer le Enforce HTTPStraitement.

Une fois le traitement terminé, il devrait ressembler à ceci:

entrez la description de l'image ici

Cliquez simplement sur la Enforce HTTPScase à cocher et pointez votre navigateur vers https://example.com. Il doit rediriger et ouvrirhttps://www.example.com

C'EST ÇA!

GitHub gardera automatiquement votre certificat HTTPS à jour ET devrait gérer l'apex pour wwwrediriger via HTTPS.

J'espère que cela t'aides!!

...

Ancienne réponse (avant le 23/01/19)

Alors je l'ai compris. James McLaughlin m'a donné le coup de pouce dont j'avais besoin.

Pour configurer un domaine personnalisé pour un référentiel de pages de projet gh-pages qui gère www.votredomaine.com et votredomaine.com (en supposant que vous avez déjà une branche gh-pages sur votre référentiel):

  1. Depuis votre dépôt de projet, branche gh-pages. Créez un fichier CNAME avec le contenu yourdomain.com. Validez puis poussez.
  2. Dans votre gestionnaire DNS, configurez deux cnameenregistrements. Un pour l'apex racine (@) et un pour www. Les deux pointent du doigt YOURusername.github.io. Si votre fournisseur DNS ne prend PAS en charge les ALIASenregistrements sur le sommet racine (@), créez simplement des Aenregistrements qui pointent vers 192.30.252.153et192.30.252.154
  3. Attendez la mise à jour de vos serveurs de noms:

    dig yourdomain.com +nostats +nocomments +nocmd

rynop
la source
14
Depuis le 19 avril 2012, la documentation de GitHub utilise 204.232.175.78comme adresse IP.
Aseem Kishore
31
Vérifié le 6 février 2014 et les documents github disent: Créez des enregistrements DNS A qui pointent vers les adresses IP suivantes: 192.30.252.153, 192.30.252.154.
Danny
2
"Si vous utilisez un enregistrement A qui pointe vers 207.97.227.245 ou 204.232.175.78, vous devrez mettre à jour vos paramètres DNS, car nous ne servons plus les pages directement à partir de ces serveurs." help.github.com/articles/my-custom-domain-isn-t-working - 08/03/14
eddywashere
11
Je ne pense pas qu'il soit possible de configurer un enregistrement CNAME à partir du domaine @ nu. C'est pourquoi vous avez besoin des enregistrements A pour gérer la redirection du domaine nu vers le sous-domaine www. C'est un problème avec n'importe quel cloudhost. Aucune garantie d'une IP fixe.
superluminaire
2
@rynop GoDaddy n'autorise pas @ et www à votrenomutilisateur.github.io, un seul enregistrement CNAME par sous-domaine :(
Tejas Manohar
241

Aperçu

La documentation est un peu déroutante en ce qui concerne les pages de projet , par opposition aux pages utilisateur . Il semble que vous devriez en faire plus, mais en fait, le processus est très facile.

Ça implique:

  1. Configuration de 2 enregistrements A statiques pour le domaine nu (pas www).
  2. Création d'un enregistrement CNAME pour www qui pointera vers une URL GitHub. Cela gérera la redirection www pour vous.
  3. Création d'un fichier nommé CNAME (en majuscule) dans la racine de votre projet sur la branche gh-pages. Cela indiquera à Github à quelle URL répondre.
  4. Attendez que tout se propage.

Ce que vous obtiendrez

Votre contenu sera servi à partir d'une URL du formulaire http://nicholasjohnson.com .

La visite de http://www.nicholasjohnson.com renverra une redirection 301 vers le domaine nu.

Le chemin sera respecté par la redirection, donc le trafic vers http://www.nicholasjohnson.com/angular sera redirigé vers http://nicholasjohnson.com/angular .

Vous pouvez avoir une page de projet par référentiel, donc si vos référentiels sont ouverts, vous pouvez en avoir autant que vous le souhaitez.

Voici le processus:

1. Créer des enregistrements A

Pour les enregistrements A, pointez @ vers les adresses IP suivantes:

@: 185.199.108.153
@: 185.199.109.153
@: 185.199.110.153
@: 185.199.111.153

Ce sont les adresses IP Github statiques à partir desquelles votre contenu sera servi.

2. Créez un enregistrement CNAME

Pour l'enregistrement CNAME, pointez www vers votrenomutilisateur.github.io. Notez le point final arrière. Notez également qu'il s'agit du nom d'utilisateur et non du nom du projet . Vous n'avez pas encore besoin de spécifier le nom du projet. Github utilisera le fichier CNAME pour déterminer à partir de quel projet servir le contenu.

par exemple

www: forwardadvance.github.io.

Le but du CNAME est de rediriger tout le trafic du sous-domaine www vers une page GitHub qui 301 redirigera vers le domaine nu.

Voici une capture d'écran de la configuration que j'utilise pour mon propre site http://nicholasjohnson.com :

Enregistrements A et CNAME requis pour les pages statiques Github

3. Créez un fichier CNAME

Ajoutez un fichier nommé CNAME à la racine de votre projet dans la branche gh-pages. Celui-ci doit contenir le domaine que vous souhaitez servir. Assurez-vous de vous engager et de pousser.

par exemple

nicholasjohnson.com

Ce fichier indique à GitHub d'utiliser ce dépôt pour gérer le trafic vers ce domaine.

4. Attendez

Attendez maintenant 5 minutes, votre page de projet devrait maintenant être en ligne.

superluminaire
la source
1
Non, le domaine apex a une adresse IP statique. Le sous-domaine www a le CNAME.
superluminaire
4
@superluminary, j'ai répété votre processus, et j'ai deux problèmes, 1) J'utilise freeDNS fear.org pour le partage DNS, ce qui ne permet pas d'ajouter de suivi. dans username.github.io .. 2) quand j'ai ajouté l'url de github.io sans traîner., mydomain.com fonctionne, mais je ne peux pas accéder à www.mydomain.com ??
bistaumanga
4
La partie que je ne pouvais pas comprendre via les documents GitHub était quelle URL utiliser pour le projet. Merci pour cette réponse: "c'est le nom d'utilisateur, pas le nom du projet." alors utilisezyourUserName.github.io.
pkamb
1
J'ai mis à jour cette solution et je recommande vraiment de le faire. Vous pouvez le faire fonctionner par d'autres moyens, par exemple en utilisant un CNAME pour l'hôte @, mais cela cassera le courrier électronique, etc. C'est la meilleure solution que j'ai trouvée. Je vous remercie.
Steven L.
1
Je vous remercie! J'étais coincé sur la valeur correcte pour l'enregistrement CNAME dans DNS - juste organization.github.io, quel que soit le projet sous cette organisation que vous essayez de servir. (c.-à-d. PAS organisation.github.io/repo)
Libby
21

Si vous vous demandez comment faire apparaître votre domaine au www.mydomain.comlieu de rediriger la wwwdemande vers mydomain.com, essayez ceci:

Le fichier CNAME sur la branche gh-pages aura une ligne:

www.mydomain.com(au lieu de mydomain.com)

Quelle que soit votre préférence pour la redirection (en d'autres termes, peu importe ce qui se trouve dans votre fichier CNAME sur la branche gs-pages), avec votre fournisseur DNS , vous devez le configurer comme ceci:

A      @    192.30.252.154
A      @    192.30.252.153
CNAME  www  username.github.io
Phil
la source
@zwacky pourquoi ne puis-je pas simplement pointer le CNAME vers @? pourquoi "www.mydomain.com" et "mydomain.com" devraient-ils se résoudre en adresses IP potentiellement différentes?
aaa90210
19

Réponse courte

Ces explications détaillées sont excellentes, mais la confusion de l'OP (et la mienne) pourrait être résolue avec une seule phrase: "Dirigez le DNS vers votre nom d'utilisateur ou votre organisation GitHub , en ignorant le projet spécifique, et ajoutez les fichiers CNAME appropriés dans vos référentiels de projet: GitHub enverra le bon DNS au bon projet en fonction des fichiers du référentiel. "

Jim Pivarski
la source
1
Je n'ai aucune idée de ce que signifie "envoyer DNS".
ceving
Redirigez les requêtes DNS afin que les requêtes HTTP avec des noms de domaine particuliers obtiennent les bons documents comme réponses.
Jim Pivarski
13

Au 29 août 2013, la documentation de Github affirme que:

Avertissement: les sous-chemins de pages de projet comme http://username.github.io/projectname ne seront pas redirigés vers le domaine personnalisé d'un projet.

Amio
la source
3
Je ne comprends pas pourquoi ils ont ajouté ce comportement. Je veux que mon .com pointe vers des pages github, et non l'inverse.
Jordan Scales
9
J'étais vraiment confus par cela aussi. Si je comprends bien, vous pouvez toujours pointer yoursite.com vers des pages github, mais votrenomutilisateur.github.io/yoursite ne redirigera pas vers yoursite.com. C'est bien parce que yoursite.com fonctionnera toujours, assurez-vous simplement de mettre à jour vos enregistrements DNS et attendez que cela se résout. help.github.com/articles/…
eddywashere
Cela devrait avoir des ramifications SEO (Search Engine Optimization) pour le site Web. Google est censé rétrograder le classement des résultats du contenu accessible à partir de plusieurs domaines, ce qui est l'une des raisons pour lesquelles les redirections 301 ("permanentes") de username.github.io/projectnameà www.projectname.com.
BorromeanNot
3

Les choses sont beaucoup plus faciles de nos jours!

  1. Mettez à jour votre enregistrement de domaine Apex (@) pour pointer

192.30.252.154

192.30.252.153

  1. Modifiez votre champ de domaine Custome dans vos paramètres de dépôt github.

enter image description here

  1. www et d'autres sous-domaines peuvent être mis à jour en tant que CNAME vers le domaine apex.
Rafaf Tahsin
la source
2

Je viens de découvrir, après un peu de frustration, que si vous utilisez PairNIC , tout ce que vous avez à faire est d'activer le paramètre "Web Forwarding" sous "DNS personnalisé" et de fournir l'adresse username.github.io/project et cela configurer automatiquement les enregistrements de l'apex et du sous-domaine pour vous. Il semble faire exactement ce qui est suggéré dans la réponse acceptée. Cependant, il ne vous permettra pas de faire exactement la même chose en ajoutant manuellement des enregistrements. Très étrange. Quoi qu'il en soit, il m'a fallu un certain temps pour comprendre cela, alors j'ai pensé partager pour sauver tout le monde.

Brandon Fosdick
la source
0

J'aimerais partager mes étapes qui sont un peu différentes de celles proposées par rynop et superluminary .

  • pour ARecord est exactement le même mais
  • au lieu de créer CNAMEcar wwwje préférerais le rediriger vers mon domaine vide ( non-www)

Cette configuration fait référence aux indications du domaine préféré . Le paramètre de domaine de wwwto non wwwou vice versa peut être différent sur chacun des fournisseurs de domaine. Puisque mon domaine est sous GoDaddy, donc sous le paramètre de domaine, je l'ai défini en utilisant le transfert de sous-domaine (301).

À la suite du pointage du domaine vers le référentiel Github, il donnera alors toutes les URL pour les deux masteret les gh-pagesbranches similaires comme celles que j'ai répertoriées ci-dessous vont au domaine préféré:

Maître

En créant un CNAMEfichier sur une masterbranche (vérifiez-le sur mon référentiel d'utilisateurs ).

http://hyipworld.github.io/
http://www.hyip.world/
http://hyip.world/

pages-gh

En créant le même CNAMEfichier sur la gh-pagesbranche (vérifiez-le sur mon référentiel de projet ).

http://hyipworld.github.io/maps/
http://www.hyip.world/maps/
http://hyip.world/maps/

En plus du CNAMEfichier ci-dessus, vous devrez peut-être contourner complètement le traitement Jekyll sur les pages GitHub en créant un fichier nommé .nojekyllà la racine de votre référentiel de pages.

Chetabahana
la source
3
Je recommanderais de ne pas utiliser godaddy, mais juste une opinion personnelle
MMachinegun