Faits : A. A.a. Par contrat du 29 novembre 2003, A._ (ci-après: le bailleur) a remis à bail à B._ (ci-après: le locataire) un appartement duplex au 1 er étage d'un immeuble sis à C._ dans le canton de Vaud. Le bail, conclu pour une durée d'un an, soit du 1 er janvier 2004 au 31 décembre 2004, se renouvelait ensuite d'année en année, sauf avis de résiliation signifié par l'une ou l'autre des parties au moins trois mois à l'avance. Le loyer mensuel net prévu dans le contrat s'élevait à 2'100 fr., montant auquel s'ajoutaient un acompte pour les frais de chauffage, d'eau chaude et les frais accessoires, le loyer du garage de 160 fr. et le loyer de la place de parc extérieure de 70 fr. La formule officielle de notification du loyer initial pour la conclusion d'un nouveau bail n'a pas été remise au locataire. A.b. Le 3 février 2016, le locataire a conclu avec le bailleur un accord en vertu duquel il s'engageait à participer financièrement à l'installation de caméras de surveillance dans l'immeuble à hauteur de 1'896 fr. A.c. Par courrier du 23 juin 2016, le locataire et son épouse, qui habitait également l'appartement, ont résilié le contrat de bail de façon anticipée pour le 31 juillet 2016, subsidiairement pour le 31 décembre 2016. Un litige a surgi entre les parties au sujet de la restitution anticipée de l'appartement, le bailleur considérant que celle-ci n'était pas valable et que le locataire restait ainsi redevable du loyer jusqu'à la fin du bail. A.d. Le locataire s'est acquitté de tous les loyers depuis le début du bail jusqu'au 31 août 2016. Il a en outre versé au bailleur un montant de 2'304 fr. en date du 24 octobre 2016. B. Le 11 octobre 2017, le bailleur a saisi le Tribunal des baux du canton de Vaud d'une demande dans laquelle il a conclu au paiement par le locataire de la somme de 10'715 fr. 30, intérêts en sus, pour les loyers en souffrance de septembre 2016 à décembre 2016. Après l'échec de la procédure de conciliation initiée le 5 juillet 2017, le locataire a déposé une demande devant le Tribunal des baux le 24 octobre 2017, concluant à la constatation de la nullité du loyer initial, à la fixation de celui-ci à 1'200 fr. dès le 1 er janvier 2004, montant qu'il a ensuite modifié à 1'000 fr., et à la restitution du trop-perçu. Il a également sollicité la radiation de la poursuite n o ddd introduite à son encontre par le bailleur, et réclamé le remboursement de la somme de 1'896 fr. à titre de participation aux frais d'installation des caméras de surveillance dans l'immeuble. Le bailleur a conclu au rejet de la demande, en soulevant notamment l'exception de prescription. Par jugement du 17 juillet 2018, le Tribunal des baux a fixé le loyer initial à 1'650 fr. par mois dès le 1 er janvier 2004. Examinant l'exception de prescription soulevée par le bailleur, il a retenu que le locataire avait eu connaissance de la nullité du loyer initial lorsqu'il avait pris contact avec son assureur protection juridique en date du 6 juillet 2016. En saisissant l'autorité de conciliation en matière de baux à loyer le 5 juillet 2017, le locataire avait ainsi respecté le délai de prescription relatif d'une année prévu par l'art. 67 al. 1 CO. S'agissant de la prescription absolue de dix ans, le tribunal a considéré que le délai ne commençait pas à courir dès la conclusion du bail mais indépendamment pour chaque loyer à compter du moment où le locataire avait versé chacun d'eux. Partant, l'action en enrichissement illégitime était partiellement prescrite, le locataire ne pouvant prétendre qu'au remboursement des parts de loyer versées indûment dans les dix ans précédant le dépôt de la requête de conciliation. Par ailleurs, le tribunal a estimé que le locataire devait s'acquitter du loyer et des frais accessoires jusqu'au 31 décembre 2016, dans la mesure où les conditions de l'art. 264 CO (restitution anticipée de la chose) n'étaient pas remplies. Après compensation des créances réciproques, il a condamné le bailleur à payer au locataire la somme de 43'834 fr. Statuant le 8 juillet 2019, la Cour d'appel civile du Tribunal cantonal du canton de Vaud a partiellement admis l'appel interjeté par le bailleur et a rejeté l'appel joint formé par le locataire. Contrairement aux premiers juges, la cour cantonale a considéré qu'aucune pièce n'attestait du versement effectif par le locataire de la somme de 1'896 fr. au titre de participation aux frais d'installation des caméras de surveillance, de sorte que ce montant restait dû. Elle a dès lors réformé le jugement de première instance en portant à 41'938 fr. (43'834 fr. - 1'896 fr.) la somme due par l'appelant au locataire. Pour le surplus, elle a confirmé ce jugement. C. Le 30 septembre 2019, A._ (ci-après: le recourant) a formé un recours en matière civile au Tribunal fédéral. Il conclut, en substance, à la réforme de l'arrêt cantonal, en ce sens que le locataire soit condamné au paiement de la somme de 8'912 fr., intérêts en sus, et que les frais et dépens de la procédure de deuxième instance soient mis à la charge du locataire. Au terme de sa réponse du 2 décembre 2019, B._ (ci-après: l'intimé) a conclu au rejet du recours. L'autorité précédente, qui a produit le dossier de la cause, s'est référée à son arrêt.